Paxos协议
Raft协议
注:Consul注册中心就是基于此协议。
ZooKeeper
ZooKeeper 是一个由Java开发的开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
ZAB
Zookeeper Atomic Broadcast(Zookeeper 原子广播协议),为了保证写操作的一致性与可用性,ZooKeeper专门设计了一种名为原子广播(ZAB)的支持崩溃恢复的一致性协议。基于该协议,ZooKeeper实现了一种主从模式的系统架构来保持集群中各个副本之间的数据一致性。根据ZAB协议,所有的写操作都必须通过Leader完成,Leader写入本地日志后再复制到所有的Follower节点。ZAB 让整个 Zookeeper 集群在消息广播和崩溃恢复两个模式之间转换。
ZooKeeper的特性
顺序一致性: 保证客户端操作是按照顺序生效的.
原子性: 更新成功或失败,没有部分结果.
单个系统映像:无论连接到哪个集群中服务器,客户端都能看到相同的内容.
可靠性: 数据的变更不会丢失,除非被客户端覆盖修改.
zk发生数据更改时,先进行事务记录,会在集群中进行一致性算法处理,最终实现一致性,实现可靠.
及时性: 保证系统的客户端当时读取的数据是最新的.
常见问题
- 主从架构下,leader 崩溃,数据一致性怎么保证?
leader 崩溃之后,集群会选出新的 leader,然后就会进入恢复阶段,新的 leader 具有所有已经提交的提议,因此它会保证让 followers 同步已提交的提议,丢弃未提交的提议(以 leader 的记录为准),这就保证了整个集群的数据一致性。
- 选举 leader 的时候,整个集群无法处理写请求的,如何快速进行 leader 选举?
这是通过 Fast Leader Election 实现的,leader 的选举只需要超过半数的节点投票即可,这样不需要等待所有节点的选票,能够尽早选出 leader。
强一致性算法Paxos、Raft、ZAB简单理解
因果关系-向量时钟
分布式事务
服务熔断和降级
集群、分布式、SOA 、微服务区别
集群
多台服务部署相同应用构成一个集群。
作用:通过负载均衡设备共同对外提供服务。
分布式
分布式系统是一个硬件或软件组件(子系统)分布在不同的网络计算机上,彼此之间仅仅通过消息传递和协调完成整个业务流程的系统。不同模块部署在不同的服务器上。
作用:解决网站高并发带来的问题。
SOA
Service Oriented Architecture 面向服务的架构。将应用程序的不同功能单元拆分为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力,通过这些服务之间定义良好的接口和契约联系起来。SOA比分布式架构更加解耦合。扩展也更容易。
作用:简化维护,降低整体风险,伸缩灵活。
微服务
架构设计概念更倡导服务的细粒度,重用组合,各服务间隔(分布式也是隔离),自治(分布式依赖整体组合),其它特性(单一职责,边界,异步通信,独立部署),是分布式概念的更严执行SOA到微服务的演讲过程。
作用:各服务可独立应用,组合服务也可系统应用。