龙空技术网

分布式算法最全详解(4大主流算法图解)

mikechen 206

前言:

而今咱们对“分布式计算原理和算法有哪些特点”大约比较看重,朋友们都需要了解一些“分布式计算原理和算法有哪些特点”的相关内容。那么小编同时在网上网罗了一些有关“分布式计算原理和算法有哪些特点””的相关文章,希望同学们能喜欢,你们快快来学习一下吧!

分布式算法对于保证分布式一致性非常的重要,也是构建分布式的基石,下面我就重点详解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万字《阿里架构师进阶专题合集》里面。

标签: #分布式计算原理和算法有哪些特点 #分布式计算原理和算法有哪些特点呢