分布式系统及其一致性算法

一,分布式系统
1,简介。(what) 这是一个较为宽泛的概念,它的产生和出现是为了解决和应对以往系统的问题
百科: 分布式系统(distributed system),是建立在网络之上的软件系统。正是由于软件的特性,所以分布式系统具有内聚性和透明性。
内聚性: 系统内的节点、服务的目的、分工、规则明确。
透明性: 分布式系统对外提供服务,调用该系统的外部用户不用考虑它是怎样工作的,只要根据规则进行使用就行,也不需要里面包含多少台服务器,在什么地方
简单理解: 是一套互相连接共同对外提供服务的系统,系统内部结点采用某种方式进行通信;常见的大的如大型电商系统,小的如数据库集群、缓存集群。

2,使用分布式系统原因?(why)
* 分布式系统出现之前的单机系统,一旦服务器的操作系统、硬盘、网络出现问题就会导致服务的中断,数据的丢失等问题。
* 单机系统的性能再高、存储能力再扩展、也是有限的。而分布式系统可以以大量的服务器来分散带宽、存储、计算的压力
* 由于跨远区域甚至跨国、网络的延迟有时候是客观的,所以说服务器集中在一个地方很难再较大的区域内提供较好的服务和体验

3,分布式系统在实际操作环境之中的问题;
由于分布式系统不完美的运行环境,所以有些问题尚待解决。例如,系统之间的每个节点都有可能出现单个节点出现故障突然间不工作了,节点间会有或大或小,忽大忽小的网络延迟,节点间也有可能出现网络中断。从技术角度来看,可能出现的问题基本上认为是早晚会发生的,说到底,很多问题就是成本和收益的平衡。因此,一个分布式系统要想正常的对外提供服务,它的设计本身就的考虑这些问题的解决。在算法层面上,分布式一致性算法就是为了辅助和解决这些问题,确保系统尽可能的能够正常的对外提供服务

二,分布式一致性算法
简介;
主要是从系统角度分析分布式系内部节点本身及其节点之间出现问题的解决,
例如,一个系统之间包含5个节点,由于网络问题,其中3个节点与另外2个节点失去连接,此刻系统如何处理?是否继续提供服务支持?如果继续提供服务支持,那么他们之间的数据就是不一致的,后面节点的网络恢复后,怎么解决数据不一致问题?
其次,节点间的网络延迟,磁盘读写,CPU处理能力都不尽相同,那么保存到这个系统中的数据什么样的情况下认为保存成功?同时还要以一种高效的形式来实现。

常见的分布式系统的一致性算法:
Paxos Raft ZAB
ZAB(zookeeper atomic Broadcast):
主要以下特点:
* 把节点分为两种:主节点(leader)和从节点(follower)
* 有一个主节点,所有的写操作(这里的写操作可以认为是新增和修改)都在主节之上,如果有一个从节点收到写操作请求,也会转移到主节点处理。
* 其他节点都是从节点,可以通过从节点进行读操作
* 主节点通过选举所得,主节点失踪后,其余从节点自动选取新的主节点

写操作具体实施:
常规写流程如下:
1. 客户向主节点请求写数据X
2. 主节点为该条数据X生成唯一的递增id,叫ZXID X(id)
3. 主节点把X(id)发送给所有从节点,跟他们确认能不能正常的将数据记录下来,这个操作叫做Propose提议
4. 超过一半的从节点向主节点回复没有问题,这个操作叫做ACK应答
5. 主节点收到一半以上从节点肯定回答后,给所有从节点发送确认提交请求,即表示你们可以将这条数据保存下来了,同时自己也正式保存这条数据,这个过程叫做commit

节点挂掉的各个情况:
1. 少部分节点挂掉没有任何影响
2. 一半节点挂掉,系统不能提供服务;一般这种情况的概率较小
3. 少部分节点挂掉、一段时间后又恢复了之后:
* 先通过主节点同步最新的数据;因为自己挂掉一段时间后,很有可能没有最新的数据。
* 数据同步之后正式成为子节点开始工作。

同理:新添加的子节点到现有的集群也是这个模式
4. 在主节点挂掉期间,系统暂时不对外提供服务,开始新的节点选举
ZAB节点选举机制:发消息到每一个自己能连得上的节点:包含自己的节点编号myid和保存数据的最大ZXID
选举规则:
* 谁的ZXID最大,谁就是主节点。why?因为这表示他的数据最新。尽量保证数据的一直性。
* ZXID一样时,谁的myid最大,谁就是新的主节点。
* 每个节点收到其他节点的数据后,与自己的数据进行判断,如果对方的比自己大,那就认同对方为主节点
* 得到一半以上(注意;这里又是一半以上)节点认同的候选节点成为新的主节点

====》最后 新的主节点选取出来以后,进入集群成为数据同步节点,先检查节点内部那些数据比自己旧,然后将数据同步过去。然后对外提供服务

Raft算法:
Raft算法与ZAB算法类似,也分为主节点和从节点;区别在于主节点选取机制上有所不同。
Raft选举机制:
1. 发现主节点失踪一段时间之后,所有从节点向其他从节点发送消息,让他们选取自己为新的主节点。
2. 还没有参加选举的从节点如果收到其他节点的选举请求,就选取自己收取到的第一个节点,后面在有谁请求自己支持选取,就告知自己已经支持另一个节点了。
3. 如果一个节点发现另一个节点的支持率比自己高,那么自己就无条件的支持另一个节点,并同时让自己的簇拥也支持另一个节点。
4. 如果一轮选举没有选取出新的主节点,那么就开始下一轮选举,知道一个节点得到大多数的拥簇。

备注:
关于ZXID说明:主节点上没提交的数据在从节点上也算做未提交,因此没提交的数据的ZXID不算数。

关于选举说明:选举一定是在主节点挂掉之后才进行的。分布式一致性算法可以再保证部分节点挂掉的情况下,数据的一致性;但是在大部分节点同时挂掉的情况下不保证。如果超过半数节点同时挂掉,那么该系统则不对再外提供服务。
当然,在写数据时,强制确认所有节点都写入了新数据会更安全和一致,但是系统的可用性和性能就大大降低了;
譬如一个节点挂掉,那么整个系统就不能够正常的工作了。

Q&A
Q:为什么要保证一半以上的从节点回复?
A为了保证数据的一致性

Q:如果他们网络恢复之后,正常节点与非正常节点(多数节点与少数节点间)数据已谁为准?
A:分布式一致性算法采用大多数认同的方式

Q:判定主节点已死的依据是什么?因为通过节点选举的机制,那么主节点的压力比较大。
A:通过心跳检测来判断;针对心跳侦听时间的配置较为严苛,间隔太大容易响应慢,间隔太小容易出现假死。所以针对这种情况分两方面考虑:1,针对外部系统通过缓存、延迟调用等方式解决;2,对内在运维上需要对于服务器做自动化监控预警告警方面的处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容