分布式系统架构笔记

1. 计算机系统架构 

 

架构,又名软件架构,是一个系统的草图,描述的对象是直接构成系统的抽象组件,包括系统的组件、模块、接口以及它们之间的关系和交互方式等方面。

在一个分布式系统中,需要考虑如何将不同计算机节点之间的代码和数据进行组织,如何处理分布式环境下的通信和同步问题,以及如何保证系统的可伸缩性、容错性和可维护性等方面。因此,选择适合的软件架构可以有助于解决这些问题,并显著提高分布式系统的可靠性和性能。

2. 分布式系统

分布式系统是由多台计算机节点通过网络连接相互协作,共同完成一定任务的计算机系统。分布式系统的特点包括高可用性、可扩展性、容错性和并发性等。

在分布式系统中,每个节点都是自治的,有自己的计算资源和数据存储,节点之间通过消息传递或共享数据来完成任务。分布式系统通常由多个分布式组件或服务组成,这些组件或服务分布在不同的节点上,并通过分布式协议协调彼此之间的交互。

分布式与集群一样,都是集中多个代理设备进行工作,但集群是将全部的服务器都集中起来做相同的事情,而分布式是将一种业务拆分为多个子部分,每个子部分分布在不同的服务器上,因此每台服务器进行的是不同的工作。

3. 分布式选举算法​​​​​​​

(1)Bully算法

目标:选择ID最大的节点成为主节点。

算法思想:

1. 假设每个节点都知道集群中其他节点的ID;

2. 每个节点都判断自己的ID是否是所有节点中最大的。如果是,节点将直接向其他节点发送Victory消息,宣布自己成为主节点。如果自己不是所有节点中ID最大的,节点将向所有比自己ID大的节点发送Election消息,并等待其他节点的回复;

3. 如果节点收到来自比自己ID小的节点发来的Election消息,节点将回复一个Alive消息,告知其他节点自己的ID更大;

4. 如果在给定的时间范围内,本节点没有收到其他节点回复的Alive消息,该节点将成为主节点,并向其他节点发送Victory消息。如果该节点接收到来自比自己ID大的节点的Alive消息,则将等待其他节点发送Victory消息。

(2)Raft算法

目标:由集群中的每个节点投票选举主节点,第一个获得超过一半选票的节点成为主节点。

算法思想:

1. 集群中所有节点随机生成一个时间间隔,若在该时间间隔内没有接收到其他节点的心跳消息,则该节点成为候选节点;

2. 候选节点向其他节点发送投票请求,包括自己的任期号和候选节点的ID;

3. 其他节点进行投票,如果该节点的任期号大于等于候选节点的任期号,则该节点同意投票,并将自己的任期号返回给候选节点;

4. 若候选节点收到超过一半的投票,则该节点成为领导者,并向其他节点发送心跳消息;若候选节点未收到足够多的投票,则视为选举失败,候选节点增加自己的任期号,并重新执行选举过程。

(注:由于集群中节点成为主节点的条件为获得超过一半的选票,因此总结点数一般选为奇数,以防止出现两个节点均获得一半选票的情况)

(3)ZAB算法

目标:由含有数据最新的节点成为主节点。

算法思想:

1. 节点随机生成一个初始的选举ID,并以此ID作为自己的提议;

2. 节点向其他节点发送提议消息,消息中包含自己的选举ID和zxID,其中zxID为节点中包含数据的ID,数据越新则zxID越大;

3. 其他节点接收到提议消息后,比较提议中的选举ID和自己的选举ID,如果提议中的选举ID大于自己的选举ID,则回复“赞成”消息,否则回复“反对”消息;

4. 发送提议消息的节点收到超过半数的“赞成”消息,则该节点成为领导者,并将自己的zxID与该消息一同发送给其他节点;若候选节点未收到足够多的“赞成”消息,则视为选举失败,候选节点增加自己的任期号,并重新执行选举过程。

(注:与Raft算法类似,为了防止出现两个节点均获得一半选票的情况,集群总结点数量一般选为奇数)

算法时间对比:Bully < Raft < ZAB

算法性能对比:ZAB > Raft > Bully

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值