前言:
而今咱们对“分布式计算原理和算法有哪些特点”大约比较看重,朋友们都需要了解一些“分布式计算原理和算法有哪些特点”的相关内容。那么小编同时在网上网罗了一些有关“分布式计算原理和算法有哪些特点””的相关文章,希望同学们能喜欢,你们快快来学习一下吧!分布式算法对于保证分布式一致性非常的重要,也是构建分布式的基石,下面我就重点详解4大主流分布式算法@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Paxos算法
Paxos算法是一种用于分布式一致性的协议,主要解决:分布式系统中的一致性问题,确保多个节点对共享状态达成一致。
在Paxos算法中,有三种角色,分别是:提议者(proposer)、接收者(acceptor)和学习者(learner)。
如下图所示:
Paxos算法:是基于议员们如何就提案达成一致的一个隐喻而命名,提议者负责提出提案,接收者负责接受、或拒绝提案。
Paxos算法主要分为三个阶段:
准备阶段(Prepare Phase):提议者向大多数接收者发送一个编号为n的准备请求,要求接收者回复已经接受过的最大编号的提案;提案阶段(Proposal Phase):如果提议者收到了大多数接收者的回复,表示接收者已经接受了编号小于n的提案,那么提议者就可以向接收者发送一个编号为n的提案;学习阶段(Learn Phase):如果一个提案被大多数接收者接受,那么学习者就可以学习到这个提案。
应用场景:
Paxos算法通常用于:实现分布式数据库、分布式锁、一致性哈希等需要强一致性的分布式系统中。
Raft算法
Raft算法是一种用于分布式一致性的算法,Raft算法可以简要理解为Paxos算法的精简版。
因为Paxos算法过去难以理解,而Raft算法做了精简,主要涉及到3大角色:
分别是:领导者(Leader)、跟随者(Follower)、和候选人(Candidate)。
1、领导者(Leader)
领导者是Raft算法中的核心角色,负责:处理客户端的请求,并通过日志复制机制,确保所有的跟随者都复制了领导者的日志条目。
领导者定期发送心跳消息给其他节点,以保持自己的领导地位。
2、跟随者(Follower)
跟随者是Raft算法中的普通节点,它们接受:来自领导者的指令,并复制领导者的日志。
在正常情况下,大多数节点都是跟随者,它们不处理客户端请求,只负责接收、和复制领导者的日志。
3、候选人(Candidate)
候选人是在选举过程中的节点状态,当一个节点处于候选人状态时,它向其他节点发送选举请求,试图成为新的领导者。
在Raft算法中,选举过程是通过投票机制实现的,候选人需要获得大多数节点的支持才能成为新的领导者。
如果候选人在一定时间内没有获得足够的选票,那么它将重新进入跟随者状态。
Raft算法的基本思想是:
通过定期的选举过程来选出一个领导者,领导者负责处理客户端请求,并确保日志的一致性;
在领导者的领导下,所有的跟随者,都复制领导者的日志,并且只有领导者有权向日志中添加新的条目。
应用场景
Raft算法,适用于各种需要一致性复制的分布式系统,包括:分布式数据库、分布式文件系统......等。
ZAB算法
ZAB算法,全程是ZooKeeper Atomic Broadcast,该算法是Apache ZooKeeper用于实现一致性的协议。
ZAB算法:是一种基于原子广播的算法,用于确保分布式系统中的多个节点之间的一致性。
大致流程如下:
ZAB算法将整个一致性过程分为两个阶段:领导者选举阶段和广播阶段;在领导者选举阶段,节点通过投票选举出一个领导者,领导者负责处理客户端请求,并将请求广播给其他节点。;在广播阶段,领导者将客户端请求广播给所有节点,并等待大多数节点的确认。
应用场景
ZAB算法通常用于构建分布式协调服务,例如:Apache ZooKeeper。
Gossip算法
Gossip算法是一种分布式通信算法,用于实现分布式系统中的信息传播、和状态同步。
原理:
Gossip算法的核心是:随机通信、和信息传递,每个节点都定期与其他节点进行通信,并将自己的信息传播给其他节点。
当一个节点收到其他节点的信息时,它会更新自己的状态并将信息,传播给其他节点,从而实现状态的同步和信息的传播。
这就类似在病毒传播中,病毒通过感染一个人然后传播给另一个人,逐步扩散。
类似地,Gossip算法中的节点通过、与邻居节点进行通信,将自己的信息传播给其他节点,逐步扩散。
应用场景:
Gossip算法适用于构建分布式存储系统、分布式计算系统.....等,需要信息传播和状态同步的场景。
这些算法在分布式系统中都发挥着重要作用,可以根据具体的需求、和场景选择合适的算法,来实现分布式一致性。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。