浅谈一致性协议

简介: 浅谈一致性协议

分布式系统

分布式系统面临的挑战

  • 数据规模越来越大
  • 服务的可用性要求越来越高
  • 快速迭代的业务要求系统足够易用

理想中的分布式系统

  • 高性能:可拓展、低时延、高吞吐
  • 正确:一致性、易于理解
  • 可靠:容错、高可用

🎈从HDFS开始

分布式系统就是让终端用户把一组工作在一起的计算机当做一个单独的机器来使用

数据规模的不断增加,我们需要大规模分布式系统

分布式系统最大的好处就是能够让开发者横向地扩展系统。


一致性与共识算法

什么是一致性

一致性是一种模型(或语义)来约定一个分布式系统如何向外界 (应用)提供服务。

对于我们的KV像操作一台机器一样要读到最近写入的值。

KV中常见的一致性模型:

  • 最终一致性: 读取可能暂时读不到但是总会读到
  • 线性一致性:最严格,线性执行

复制协议

  1. 当主副本失效时,为了使得算法简单,我们人肉切换,只要足够快我们还是可以保证较高的可用性。
  2. 但是如何保证主副本是真的失效了呢?
  • 在切换的过程中,主副本又开始接收client端的请求
  • 两个主副本显然是不正确的,log 会被覆盖写掉
  • 我们希望算法能在这种场景下仍然保持正确
  1. 要是增加到三个节点呢?
  • 每次都等其他节点操落盘性能较差
  • falut-tolerance能允许少数节点挂了的情况下,仍然可以工作

共识算法

概念

协商一致问题需要多个进程(或代理)达成一致。一个单一的数据值。有些过程(代理)可能在其他方面失败或不可靠,因此,协商一致的协议必须具有容错性或弹性。

简而言之一个值一旦确定,所有人都认同,


  1. 共识协议不等于一致性
  • 应用层面不同的一致性,都可以用共识协议来实现
  • 简单的复制协议也可以提供线性一致性
  1. 一般讨论共识协议时提到的一致性,都指线性一致性
  • 因为弱一致性往往可以使用相对简单的复制算法实现

一致性往往指分布式系统中多个副本对外呈现的数据的状态。

共识则描述了分布式系统中多个节点之间,彼此对某个状态达成一致结果的过程。系统中多个节点最关键的是对多个事件的顺序进行共识(排序)。


一致性协议案例:Raft

Raft是一个分布式共识算法,分布式共识算法还有Paxos,不过Paxos很难理解。

Raft与2014年发表,以易于理解作为算法的设计目标,使用了

  • 使用了RSM、Log、RPC的概念
  • 直接使用RPC对算法进行了描述
  • Strong Leader-based
  • 使用了随机的方法减少约束

Raft角色

图片.png


Raft Term

  • 每个Leader服务于一个term
  • 每个term至多只有一个leader
  • 每个节点存储当前的term
  • 每个节点term从一开始,只增不减
  • 所有rpc的request reponse都携带term
  • 只commit本term内的log

Raft的安全性

  1. 对于Term内的安全性
  • 对于所有已经的commited的<term, index>位置上至多只有一条log(目标)
  1. 由于Raft的多数派选举,我们可以保证在一个term 中只有一个leader
  2. 对于跨Term的安全性:
  • 目标:如果一个log被标记commited,那这个log一定会在未来所有的leader中出现Leader completeness
目录
相关文章
|
算法 安全 搜索推荐
常见分布式理论(CAP、BASE)和一致性协议(Gosssip协议、Raft一致性算法)
常见分布式理论(CAP、BASE)和一致性协议(Gosssip协议、Raft一致性算法)
147 0
|
算法 安全
分布式一致性协议
分布式一致性协议
115 1
|
算法
分布式学习十:ZAB协议
分布式学习十:ZAB协议
71 0
分布式学习十:ZAB协议
|
算法 Java 开发者
Zab 协议如何保持数据的一致性 | 学习笔记
快速学习 Zab 协议如何保持数据的一致性
166 0
Zab 协议如何保持数据的一致性 | 学习笔记
|
存储 算法 安全
分布式系统与一致性协议
分布式系统的设计目标一般包括如下几个方面 - 可用性:可用性是分布式系统的核心需求,其用于衡量一个分布式系统持续对外提供服务的能力。 - 可扩展性:增加机器后不会改变或极少改变系统行为,并且能获得近似线性的性能提升。 - 容错性:系统发生错误时,具有对错误进行规避以及从错误中恢复的能力。 - 性能:对外服务的响应延时和吞吐率要能满足用户的需求。
|
算法 安全 索引
Raft 协议原理详解,10 分钟带你掌握!
Raft 是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。相比传统的 Paxos 算法,Raft 将大量的计算问题分解成为了一些简单的相对独立的子问题,并有着和 Multi-Paxos 同样的性能,下面我们通过动图,以后还原 Raft 内部原理。
1592 0
Raft 协议原理详解,10 分钟带你掌握!
|
算法 调度
【分布式】一致性协议
继续前面的学习,这篇我们来学习在分布式系统中最重要的一块,一致性协议,其中就包括了大名鼎鼎的Paxos算法。
109 0
【分布式】一致性协议
|
缓存 安全 Java
缓存一致性协议-MESI
带有高速缓存的CPU执行计算的流程 程序以及数据被加载到主内存 指令和数据被加载到CPU的高速缓存 CPU执行指令,把结果写到高速缓存 高速缓存中的数据写回主内存
缓存一致性协议-MESI