ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

day01分布式一致性与共识算法入门引入

2021-11-14 14:30:14  阅读:183  来源: 互联网

标签:入门 day01 可用性 系统 算法 共识 一致性 服务器 分布式


悟已往之不谏知来者之可追

记录一下自己学习Raft算法的过程


文章目录


前言

你能造什么样的火箭,决定你能去拧什么样的螺丝。


一、引入?

在进行算法的学习之前,如果有机会,你会怎么样去设计一个分布式系统?

一般来说,单机系统数据一般都是放在本地的,基本不需要与外部通信,比如单机数据库锡系统。但是,当有一天你的系统遇到了单机系统难以维持的高请求量,为了防止系统宕机,也为了系统有更高的可用性,可用搭建类似master-slave结构的系统,并允许请求落到slave服务器上面。

但实际上当你去深入思考之后,却发现这个东西并没有你想象的那么容易设计。

首先,相比较于单机系统,分布式系统需要和多台设备进行通信,而且通信也会潮师的可能,此时发送方也无法确定通信是成功还是失败。
其次,一份数据被放在多台服务器,数据的更新也是有延迟的。
最后,当master服务器宕机了,没有一个自动机制可以立马提升slave服务器为master服务器。

这个时候你可能会想,我可以用某些方法解决上述问题,或者是用xxx框架?讲道理,一开始我也以为会有解决方法,但实际上是 没有!!!

依据就是分布式领域中CAP定理。

二、CAP定理

1.概念

基本概念:

  1. Consistency:一致性
  2. Availability:可用性
  3. Partition-tolerance:分区容错性

我想只要稍微懂一点分布式的同学都知道 ,在异步网络模型中 ,不可能同时满足上述三个 属性,只能 同时满足两个。

在这里插入图片描述

在前言中说了, 通信超时更新延迟 都是属于一致性 的问题,原因是存在多台服务器,而每台服务器都有自己的数据,数据冗余虽然可以提高系统的可用性 和 分区容错性,但是相应的难以满足一致性,但是想解决的话,就是要达到强一致性,比如把所有的请求全部通过单台服务器进行处理,那这个样子的话,其实就很难满足高可用性

根据经验来说一般都是可用性或者一致性是被弱化的对象。

但是对于高可用的系统而言,往往会保留强一致性。典型的就是延迟处理,利用消息队列的 中间件,在后台逐一处理队列中的请求,处理完毕的时候,就是达到了强一致性状态 。
但是要求强一致性的系统,比如元数据系统分布式数据库系统,他们的可用性往往是有限的。

解决上述的问题,就要用到 共识算法

2.共识算法

基础概念:

共识算法

“共识”的意思就是保证所有的参与者都有相同的认知(这个地方可以理解为一致性)。共识算法本身可以依据是否有恶意节点分为两类,大部分的时候共识算法都指向没有恶意节点的那一类,即系统节点不会向其他节点发送恶意请求,比如欺骗请求。共识算法中有名的有paxos算法,raft算法,zab算法。


总结

简单描述了下cap问题, 相比较Paxos算法相比,Raft算法在保持正确性的同时更容易理解,我认为偏向于入门。 接下来就开卷!!!

标签:入门,day01,可用性,系统,算法,共识,一致性,服务器,分布式
来源: https://blog.csdn.net/m0_56368068/article/details/121278665

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有