浅谈分布式一致性协议 | 青训营笔记

123 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第16天。

概述

了解了很多分布式系统的架构以及基本原理

为什么要分布式系统,在快速发展中对分布式提出的要求,从hdfs的namenode开始引出一个设计KV的需求 从最简单的一个单机开始把KV数据库不断打磨最终成为一个分布式系统。

最后提出什么是一致性,什么共识算法,它们之间的关系

  • 什么是一致性协议

  • 以 Raft 为例子了解一致性协议是如何工作的

  • 了解如何使用一致性协议构建一个 KV 系统

  • 了解一致性协议的发展方向

课程目录

  • 分布式系统,为什么需要分布式系统,对分布式提出的要求,
  • 一致性与共识算法,什么是一致性,什么共识算法
  • 从Raft入手,Paxos跟Raft,了解Raft基本工作原理
  • 实现细节以及未来

分布式系统

面临的挑战

  • 各种各样的错误

    • 网络
    • 磁盘
    • CPU

理想中的分布式系统

高性能:可拓展,低时延,高吞吐

正确:一致性,易于理解

可靠:容错,高可用

从HDFS开始

image.png

设计一个NameNode,实际就是一个KV

案例-KV

转化为KV服务

从最简单的单机KV开始:

image.png

image.png

考虑: 是否有容错?是否高可用?正确性?

一致性与共识算法

从复制开始

继续升级我们的KV

image.png

为了容错,我们用了两台DB,如何让两台DA保持一致,同步两台机器的状态

如果两个副本都能接受请求

image.png

这样有点复杂,不如将机器分为主从服务来设计

如何复制

image.png

如何复制操作

主副本将所有的操作打包成Log 所有的Log雪茹都是持久化的,保存在磁盘上

应用包装成状态机,只接受Log最为Input

祝福本确认Log已经成功写入到副本机器上,当状态机apply后,返回client

image.png

关于读操作

读操作

  • 方案一:直接读状态机,要求写操作进入状态机后再返回client
  • 方案二:写草最复制完成后直接返回,读操作Block等待所有pending log进入状态机

什么是一致性

对于KV,箱操作一台机器一样,读到最近写入的值

一致性是一种模型(或语义)

共识算法

image.png

共识协议不等于一致性

  • 应用层面不同的一致性,都可以用公式协议来实现
    • 比如故意返回旧的值
  • 简单的赋值协议也可以提供线性一致性

小结

  • 使用副本的方式设计了KV
  • 了解了什么是一致性
  • 了解了什么是共识算法
  • 设计了一个正确且容错的一致性是一个难题

共识算法案例:Raft

Paxos

the part-time Parliamen bu lamport 1989

基本上就是一致性协议的同义词

该算法的正确性是经过证明的

一个异步系统无法同时做到一致性和正确性 、

Raft

2014发表

易于理解作为算法的事合集目标

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

正确性:

  • 形式化验证
  • 拥有大量的成熟系统

image.png

复制状态机

RSM

  • Raft所有的consensus都直接使用Log作为载体

Raft角色

image.png

Raft流程

客户端发送请求,leader Raft接受后,之后将Log信息传递给follower,follower接收log后发送信息给leader,当多数结点成功接收,以Log形式commit到Raft,leader保存状态到状态机

log是如何同步的?如下

Raft日志复制

leader收到新的请求K,

image.png

从结点失效

通过迭代询问log

image.png

Raft Term

image.png

Raft 主节点失效

image.png

image.png

Raft安全性- 同Term

Raft安全性- 跨Term

Raft 安全性验证

小结

  • 了解了RAaft的基本工作原理
  • 简单讨论Raft正确性

回到KV

利用Raft算法,重新打造我们的KV

image.png

image.png

Raft不保证一直有一个leader

  • 只保证一个term中只多一个leader
  • 可能存在对个term的leader

image.png

回到共识算法

image.png

image.png

共识算法的未来

image.png

image.png

image.png

总结

  • 了解了一致性的定义
  • 了解了什么是共识算法
  • Raft的基本工作原理
  • 一致性协议的未来方向

标题:浅谈分布式一致性协议 | 青训营笔记

网址:juejin.cn/