受Google工程副总裁高评的可伸缩架构:面向增长应用的高可用

  • 小编 发布于 2019-11-23 03:50:25
  • 栏目:科技
  • 来源:程序员高级工程师
  • 5300 人围观

互联网从一穷二白发展到今天,“可伸缩性”、“水平扩展”这些以前只有大型互联网公司才面临的技术挑战,现在任何一家互联网公司都需要想办法去解决。写好一段代码不难, 写好一个单机软件也不难,但是要想写好一个伸缩性良好的大规模分布式系统却很难。这其中最难的地方首先在于思想观念的转变。程序员一开始接触到的就是一个确定的慨念和世界,当程序逻辑一定时, 什么样的输入就应该有什么样的输出。

但是在面对大规模系统时,我们首先要承认的是不确定性,即有很多我们想不到、料不到的事情会发生,一个边角的小错误可能就会导致整个系统的全面雪崩。

因此,我们不能再把系统当作一个稳定的、确定的程序看待,而需要在设计时充分考虑到那些可能不确定的情况。其次,就是管理整个系统的有效手段。随着规模的不断增长,之前的人工方式已经明显无法跟上机器的增长速度,规模增长所带来的可靠性、可用性问题时刻都在挑战着整个团队的极限。因此,如何有效地评估、预测、管理、监控-一个 大规模的系统,这件事本身已经变成一一个复杂的系统性工程,需要有效的方法论、原则、工具以及最佳实践经验的相应支撑。

当一个系统规模开始扩张时,可用性往往是系统首先要面临的问题。在激增的流量面前,每一次系统处理缓慢、崩溃都会给公司的业务带来损失,因此理解什么是高可用性对系统来说至关重要。为了维持或者提高系统的可用性,我们需要一 套标准和手段,来测量系统的可用性,从而才能在第一-时间发 现系统可用性是否发生了变化,并制订相应的解决方案。

随着系统规模不断扩大,各种不确定的因素会被放大,这些不确定性会给系统带来更多的不确定性。在构建大规模可伸缩系统的时候,需要先梳理清楚系统中存在哪些不确定性,把它们定义成风险因素,并建立相应的风险模型,定期回顾并确保更新新的风险点。

在这之后,我们要针对每个风险点制订相应的应对方案和措施,并持续对风险管理计划、缓和计划和容灾计划进行持续测试和评估,这样才能避免在风险发生时手忙脚乱。

当系统规模发展到一定程度时, 系统本身的架构就会突显瓶颈,之前的单体系统已经难以再开发和维护。这时候,不管从技术角度出发,还是从团队人员角度出发,服务化都是一个必然的趋势。我们需要将原有的系统功能和逻辑,拆分成多个独立的服务来进行管理。但是,随着服务越来越多,如何管理各个服务、服务间如何通信,以及团队的划分都会带来新的问题。随着业界在这方面的经验越来越多,经过Netflix、Amazon 等公司的实践和推广,微服务的概念也随之出现,并提供了完善的解决方案和工具。

受Google工程副总裁高评的可伸缩架构:面向增长应用的高可用

在解决这些问题之后,我们会发现,系统规模再继续发展就会遇到IDC的限制,单个数据中心甚至没有空间来存放服务器,也支持不了所需的网络带宽。幸运的是,云计算和服务的出现为我们创造了无限的可能。我们无须再考虑硬件和场地的问题,无须再处理烦琐的运维事项,可以按照使用量来付费,甚至很多服务也无须自己搭建,可以直接使用云服务厂商提供的各种高性能、高可用服务。云计算给我们带来的是一种颠覆性的变化,不光影响到我们的开发、运维、技术栈,更深远地影响到我们对技术和架构的思考方式,进而为创造更多商业价值提供可能。

本书通过5个部分,分别介绍了以下内容:

  1. 可用性:你将学习到如何创建高可用的应用程序,以及不断跟踪和提高可用性的技巧。
  2. 风险管理:你将学习到如何确认、降低和管理应用程序中的风险,测试你的恢复、灾备方案,以及如何构建风险更低的系统。
  3. 服务和微服务:你将理解服务对大规模运行复杂应用的系统所带来的价值。
  4. 扩展应用程序:你将学习到如何将服务分配给不同的团队,标识每个服务的关键程度,以及设计故障场景和恢复计划。
  5. 云服务:理解基于云服务的架构、资源分配以及服务分布。
受Google工程副总裁高评的可伸缩架构:面向增长应用的高可用

受Google工程副总裁高评的可伸缩架构:面向增长应用的高可用

受Google工程副总裁高评的可伸缩架构:面向增长应用的高可用

受Google工程副总裁高评的可伸缩架构:面向增长应用的高可用

受Google工程副总裁高评的可伸缩架构:面向增长应用的高可用

面向可伸缩的架构

设计一个应用程序的可伸缩性架构,并非仅仅为了能够处理更多的用户,它还包括很多其他需要扩展的方面:

●必须能够处理大量且不断增长的用户。

●必须能够处理大量且不断增长的用户数据。

●必须能够应对日益复杂的用户需求。

●必须能在公司扩张时,让更多的开发人员一起来开发应用程序,而且必须是在不

牺牲开发速度、效率或者应用程序质量的前提下。”

●即使前面列举的所有要求变得更高,你也必须保证应用程序在线上正常运行。

这些问题并不容易解决,但是本书中所讨论的很多技巧就是为了帮助你解决它们以及其他伸缩性方面的问题。

如果需要获取到这个【可伸缩架构:面向增长应用的高可用】文档的话帮忙转发一下然后再关注我私信回复“学习”得到获取方式吧!

受Google工程副总裁高评的可伸缩架构:面向增长应用的高可用

时刻考虑可能出现的故障情况,是构建大规模应用程序的一个关键因素。本书将帮助你学习如何做到这一点,以及如何在用户增长和公司发展过程中,依然保持应用程序正常运行的一些技巧。

转载请说明出处:五号时光网 ©