type
status
date
slug
summary
tags
category
icon
password
1 绪论
重难点
- 关于共识
- 区块链中的共识
- 共识机制和分布式网络
- 共识的价值
1.1 关于共识
共识
一群具有各方面差异性的人在某方面达成了一致意见,并将其上升成为共同遵守的规则
共识机制
一个群体用以达成并维护共识的方式
如举手表决、制定法律、引入协商与仲裁机制、设计选举
人类共识的特点
中心化
1.2 区块链的共识
区块链的共识机制
- 范围:网络环境
- 作用的对象:所属权各异的计算机
- 逻辑:去中心化的方式进行记账
共识机制在记账过程中重点解决两个问题
- 完全对等的节点之间如何竞争记账权
- 同时获得记账权后如何处理 — 保留最长链的方式
1.3 共识机制和分布式网络
- 区块链是一个分布式系统
- 共识机制负责安全地更新分布式网络中的数据状态,使其状态达成统一
共识机制的特点
一致性 — 所有诚实节点保存的区块链前缀部分完全相同
有效性 — 由诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块中
分配授权,公平分配 — 任何人都可以监督并验证底层源代码对网络中的所有参与者是否公平
激励机制 — 激励好的行为,惩罚坏的行为者
2 分布式系统的基本概念
重难点
- 模型
- 副本
- 衡量分布式系统的指标
2.1 模型
要知道各图标对应的含义
节点
- 一个可以独立按照分布式协议完成一组逻辑的程序个体
- 往往是一个操作系统上的进程
- 也可以认为是一个物理机或虚拟机(容器)
通信
- 节点与节点之间是完全独立、相互隔离的,节点之间传递信息的唯一方式是通过不可靠的网络进行通信
- 一个节点可以向其他节点通过网络发送消息,但发送消息的节点无法确认消息是否被接收节点完整正确收到
存储
- 将数据写入与节点在同一台机器的本地存储设备保存数据
- 存储、读取数据的节点称为有状态的节点,反之称为无状态的节点
异常
- 机器宕机
- 网络异常
- 消息丢失:网络拥塞、路由变动、设备异常等
- 消息乱序:IP 网络的存储转发机制、路由不确定性
- 数据错误:比特错误,校验后会丢弃
- 不可靠的 TCP:TCP 协议本身是可靠的,由于网络异常导致分布式系统中 TCP 通信的不可靠
- 存储数据丢失
- 无法归类的异常 — 如接受速度太慢导致超时的情况发生
分布式系统的三态
- 请求结果:“成功”、“失败”、“超时(未知)”
- 失败指的是没有得到想要的结果,但可以接收到失败的日志等
- 超时指的是无法得到任何消息,无法确定具体发生什么
- 不成功是指失败或超时其中之一
2.2 副本
副本
副本(replica / copy)— 在分布式系统中为数据或服务提供的冗余
数据副本 — 在不同的节点上持久化同一份数据
副本一致性
- 分布式系统通过副本控制协议,使得从系统外部读取系统内部各个副本的数据在一定的约束条件下相同
- 是针对分布式系统而言的,不是针对某一个副本而言
副本一致性分类
- 强一致性
- 任何时刻任何用户或节点都可以读到最近一次成功更新的副本数据
- 是程度最高的一致性要求,也是实践中最难以实现的一致性
- 单调一致性
- 任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值
- 单调一致性是弱于强一致性却非常实用的一种一致性级别
- 会话一致性
- 任何用户在某一次会话内一旦读到某个数据在某次更新后的值,这个用户在这次会话过程中不会再读到比这个值更旧的值
- 例如 HTTP 访问中的 Session
- 最终一致性
- 要求一旦更新成功,各个副本上的数据最终将达到完全一致的状态,但达到完全一致状态所需要的时间不能保障
- 弱一致性
- 一旦某个更新成功,用户无法在一个确定时间内读到这次更新的值,且即使在某个副本上读到了新的值,也不能保证在其他副本上可以读到新的值
- 例如浏览器的缓存
- 副本有可能达到一致
2.3 衡量分布式系统的指标
性能
- 系统的吞吐能力,指系统在某一时间可以处理的数据总量,通常可以用系统每秒处理的总的数据量来衡量
- 系统的响应延迟,指系统完成某一功能需要使用的时间
- 系统的并发能力,指系统可以同时完成某一功能的能力,通常也用 QPS (query per second) 来衡量
可用性
指系统在面对各种异常时可以正确提供服务的能力
系统的可用性可以用系统停服务的时间与正常服务的时间的比例来衡量,也可以用某功能的失败次数与成功次数的比例来衡量
可扩展性
指分布式系统通过扩展集群机器规模提高系统性能(吞吐、延迟、并发)、存储容量、计算能力的特性
一致性
分布式系统为了提高可用性,总是不可避免的使用副本的机制,从而引发副本一致性的问题。根据具体的业务需求的不同,分布式系统总是提供某种一致性模型,并基于此模型提供具体的服务
- 作者:Howe
- 链接:https://blog.0xhowe.top/article/ConsensusMechanism-First
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。