微服务架构中的弹性设计与实践
1. 弹性的概念
弹性是衡量系统或系统中单个组件从故障中快速恢复的能力。微服务架构本质上是分布式系统,在分布式系统中,故障是常见的。网络可能由于各种原因不可靠,如海底光纤电缆损坏、路由器过热、负载均衡器故障、计算机内存不足、电源故障、地震等,这些都可能导致分布式系统中的通信失败。
分布式系统的架构师和设计师常犯的八个错误假设包括:
1. 网络是可靠的。
2. 延迟为零。
3. 带宽是无限的。
4. 网络是安全的。
5. 拓扑结构不变。
6. 只有一个管理员。
7. 传输成本为零。
8. 网络是同质的。
2. 应对故障的策略
- 接受故障并提高弹性 :以Netflix为例,Ariel Tseitlin在其论文中提到通过定期引入故障来减少不确定性,从而提高系统的弹性。Netflix通过编写程序在生产环境中定期引发故障(Netflix Simian Army),Google也会模拟大规模灾难进行年度灾难恢复测试。
- Netflix的三步策略 :
- 将每个工程师视为相应服务的运营者。
- 将每次故障视为学习的机会。
- 培养无指责的文化。
- 冗余 :分布式系统中最常见的应对故障的方法是冗余,每个组件都有一个冗余副本,当一个组件发生故障时,对应的副本将接管。
超级会员免费看
订阅专栏 解锁全文
168万+

被折叠的 条评论
为什么被折叠?



