最近阅读了一本架构方面的入门图书叫《从零开始学架构:照着做,你也能成为架构师》,部分内容比较不错,先做书摘总结,以便加深印象与未来回顾学习。
本文是该书第三部分下半部分,是书中第九至十章,主要介绍计算高可用、业务高可用,涉及到异地多活等内容。
目录
▪第九章 计算高可用
▪第十章 业务高可用
▪其他相关摘要
第九章 计算高可用
例如ZooKeeper,其任务分配器中不存在独立的任务分配器节点,每个Server都是任务分配器,Follower收到请求后会进行判断,如果是写请求就转发给Leader,如果是读请求就自己处理。而角色指定上,其通过ZAB协议来选举Leader,当Leader故障后,所有的Follower节点会暂停读写操作,开始进行选举,直到新的Leader选举出来后才继续对Client提供服务。
如果非对称集群只有两台机器,看起来和存储高可用中的主从倒换方案类似。但在计算高可用非对称集群中,我们并不把这种方案独立出来,因为2台服务器的非对称集群和3台或100台服务器的集群并没有设计上的本质差异。
第十章 业务高可用
解决接口级故障的核心思想和异地多活基本类似:优先保证核心业务,优先保证绝大部分用户。
具体措施:
这种方式实践中比较难以找到合适的阈值。即使找到合适阈值,其还面临硬件相关问题,例如64核及其对比32核及其业务处理性能并不是2倍,可能是1.5甚至1.1倍。
为了找到合理阈值,通常可以采用性能压测来确定阈值,但仍存在覆盖场景有限的问题。另外还可以进行逐步优化,即先设定一个阈值然后上线观察运行情况,发现不合理就调整阈值。
其他相关摘要
2PC是强一致性算法,优点是实现简单,缺点有同步阻塞,即协调者与参与者互相等待对方的响应消息,等待过程中节点处于阻塞状态,所以极端情况下无论怎么处理都可能出现状态不一致的情况;另外还有单点故障,即协调者是整个算法的单点,如果协调者故障,则参与者会一直阻塞下去。
理解Paxos算法有几个关键点: