本文发布时间已超过一年。较早的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已不再正确。
每秒一百万个请求:可信赖且动态的分布式系统规模
最近,我已经习惯告诉人们构建可靠的服务并不难。如果你给我两台 Compute Engine 虚拟机,一个 Cloud Load balancer、supervisord 和 nginx,我可以为你创建一个静态 Web 服务,它将有效地永久提供静态网页。
真正的挑战是构建敏捷且可靠的服务。在新的软件开发世界中,启动大量机器并将软件推送到这些机器上是微不足道的。开发成功的产品还必须包括以可预测的方式响应变化、优雅地处理升级以及最大限度地减少用户停机时间的能力。缺少这些要素中的任何一个都会导致产品不成功,并且不稳定和不可靠。我记得不久前,每天午夜前后,网站通常会因为软件升级的安全窗口而不可用一小时。我的银行仍然这样做。这真的不太酷。
幸运的是,对于开发人员来说,我们的基础设施正在随着我们对其提出的要求而发展。Kubernetes 从头开始设计,使其易于设计、开发和部署可靠、动态的服务,以满足云原生世界的要求。
为了确切地展示我们的意思,我开发了一个简单的 Container Engine 集群演示,每秒处理 100 万个 HTTP 请求。老实说,每秒处理 100 万个请求并不是很令人兴奋。事实上,这实际上是 2013 年的事情。
真正令人兴奋的是,在成功处理每秒 100 万个 HTTP 请求并保持不间断可用性的同时,我们让 Kubernetes 将服务的零停机时间滚动升级到新版本的软件,同时我们仍然每秒处理 100 万个请求。
这只有在 Kubernetes 1.1 版本 中进行大量性能调整和增强后才有可能实现。我为我们的社区在此版本中构建的所有功能感到非常自豪。事实上,除了能够每秒处理 100 万个请求之外,我们还添加了一个自动缩放器,因此你甚至不必在半夜醒来以响应负载或内存压力来扩展服务。
如果你想在你自己的集群上尝试此操作(或使用负载测试框架来测试自己的服务),则 演示的代码可在 github 上获得。并且 完整视频 可用。
我希望我已经向你展示了 Kubernetes 如何使分布式系统的开发人员能够大规模地实现可靠性和敏捷性,并且一如既往地,如果你有兴趣了解更多信息,请访问 kubernetes.io 或 github 并在我们的 Slack 频道上与社区联系。
"https://www.youtube.com/embed/7TOWLerX0Ps"