这篇文章已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已失效。

每秒一百万请求:规模化、可靠且动态的分布式系统

最近,我养成了告诉人们构建一个可靠的服务并不难的习惯。如果你给我两台 Compute Engine 虚拟机、一个 Cloud Load Balancer、supervisord 和 nginx,我可以为你创建一个静态 Web 服务,它将提供一个静态网页,实际上可以永远运行。

真正的挑战是构建既敏捷又可靠的服务。在新的软件开发世界中,启动大量机器并将软件推送到它们上面是轻而易举的。开发一个成功的产品还必须包括以可预测的方式响应变化、优雅地处理升级以及最大限度地减少用户停机的能力。缺少这些元素中的任何一个都会导致一个不稳定且不可靠的不成功产品。我记得不久前,网站每天午夜前后通常会有一小时不可用,作为软件升级的安全窗口。我的银行现在仍然这样做。这真的很不酷。

幸运的是,对于开发者来说,我们的基础设施正在随着我们对其提出的要求而演进。Kubernetes 从头开始设计,旨在使设计、开发和部署可靠、动态的服务变得容易,这些服务能够满足云原生世界的苛刻要求。

为了准确地展示我们的意思,我开发了一个简单的演示,展示一个 Container Engine 集群每秒处理 100 万个 HTTP 请求。老实说,每秒处理 100 万个请求并没有那么令人兴奋。事实上,这就像 2013 年的事了。

令人兴奋的,在成功处理每秒 100 万个 HTTP 请求且不中断可用性的同时,我们在仍然处理每秒 100 万个请求时,让 Kubernetes 对服务进行零停机滚动升级到新版本软件。

这之所以可能,归功于 Kubernetes 1.1 版本中大量性能调整和增强功能。我为我们的社区构建到这个版本中的所有功能感到无比自豪。事实上,除了实现每秒处理 100 万个请求外,我们还增加了一个自动扩缩器,这样你就不用在半夜醒来,根据负载或内存压力来扩缩你的服务了。

如果你想在自己的集群上尝试(或使用负载测试框架测试你自己的服务),演示代码可在 GitHub 上获取。并且可以观看完整视频

我希望我已经向您展示了 Kubernetes 如何使分布式系统的开发者能够在大规模下实现可靠性和敏捷性,并且一如既往,如果您有兴趣了解更多信息,请访问 kubernetes.iogithub,并在我们的 Slack 频道与社区联系。 

"https://www.youtube.com/embed/7TOWLerX0Ps"