IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 分布式技术原理与算法解析-学习笔记(一)课前必读&分布式协调与同步 -> 正文阅读

[区块链]分布式技术原理与算法解析-学习笔记(一)课前必读&分布式协调与同步

课前必读

分布式系统指标

分布式的目的是用更多的机器,处理更多的数据和更复杂的任务

  • 性能
    • 吞吐量:QPS,TPS,BPS
    • 响应时间
    • 完成时间
  • 资源占用
    • 空载资源占用、满载资源占用
  • 可用性
  • 可扩展性

    分布式系统通过扩展集群机器规模提高系统性能 (吞吐、响应时间、 完成时间)、存储容量、计算能力的特性

第一站 分布式协调与同步

03 分布式互斥

分布式系统里排他性的资源访问方式
临界资源: 被互斥访问的共享资源
在这里插入图片描述

04 分布式选举

为什么要有分布式选举

选举的作用就是选出一个主节点,由它来协调和管理其他节点,以保证集群有序运行和节点间数据的一致性

分布式选举的算法

1. Bully 算法(长者为大)

在所有活着的节点中,选取 ID 最大的节点作为主节点;

  • 节点的角色:普通节点 主节点

  • 选举中消息类型

    • Election 消息,用于发起选举;
    • Alive 消息,对 Election 消息的应答;
    • Victory 消息,竞选成功的主节点向其他节点发送的宣誓主权的消息。
  • 假设条件

    集群中每个节点均知道其他节点的 ID

  • 选举过程

  1. 集群中每个节点判断自己的 ID 是否为当前活着的节点中 ID 最大的,如果是,则直接向 其他节点发送 Victory 消息,宣誓自己的主权;
  2. 如果自己不是当前活着的节点中 ID 最大的,则向比自己 ID 大的所有节点发送 Election 消息,并等待其他节点的回复;
  3. 若在给定的时间范围内,本节点没有收到其他节点回复的 Alive 消息,则认为自己成为主节点,并向其他节点发送 Victory 消息,宣誓自己成为主节点;若接收到来自比自己 ID 大的节点的 Alive 消息,则等待其他节点发送 Victory 消息;
  4. 若本节点收到比自己 ID 小的节点发送的 Election 消息,则回复一个 Alive 消息,告知其他节点,我比你大,重新选举。
    在这里插入图片描述
  • 算法优缺点
    • 选举速度快、算法复杂度低、简单易实现
    • 每个节点有全局的节点信息,因此额外信息存储较多;主节点,如果频繁退出、加入集群,就会导致频繁切主
  • 应用:MongoDB 的副本集故障转移功能

2. Raft 算法(民主算法)

算法总结
核心思想是 “少数服从多数”。Raft 算法中,获得投票最多的节点成为主

  • 节点角色
    • Leader,即主节点,同一时刻只有一个 Leader,负责协调和管理其他节点;
    • Candidate,即候选者,每一个节点都可以成为 Candidate,节点在该角色下才可以被选为新的 Leader;
    • Follower,Leader 的跟随者,不可以发起选举。
  • 选举流程
  1. 初始化时,所有节点均为 Follower 状态。
  2. 开始选主时,所有节点的状态由 Follower 转化为 Candidate,并向其他节点发送选举请求。
  3. 其他节点根据接收到的选举请求的先后顺序,回复是否同意成为主。这里需要注意的是,在每一轮选举中,一个节点只能投出一张票。
  4. 若发起选举请求的节点获得超过一半的投票,则成为主节点,其状态转化为 Leader,其他节点的状态则由 Candidate 降为 Follower。Leader 节点与 Follower 节点之间会定期发送心跳包,以检测主节点是否活着。
  5. 当 Leader 节点的任期到了,即发现其他服务器开始下一轮选主周期时,Leader 节点的状态由 Leader 降级为 Follower,进入新一轮选主。
  • 优缺点
    • 选举速度快、算法复杂度低、易于实现
    • 每个节点都可以相互通信,通信量大
    • 对比Bully 较稳定,当新节点加入或者节点回复故障,不一定真正切主
  • 应用 :etcd 的集群管理器 etcds

3. ZAB算法(优先级的民主投票)

较于 Raft 算法的投票机制,ZAB 算法增加了通过节点 ID 和数据 ID 作为参考进行选主,节点 ID 和数据 ID 越大,表示数据越新,优先成为主; 

ZAB 算法尽可能保证数据的最新性,ZAB 算法可以说是对 Raft 算法的改进
  • 节点角色
    • Leader,主节点;
    • Follower,跟随者节点;
    • Observer,观察者,无投票权。
  • 问题:ZAB性能为什么比Raft 算法性能高, 参考
    • Raft系统中的事务消息是通过双向的RPC来完成的,而Zab中,则是单向的,一来一回两个消息来完成的。明显Zab的性能更加,不需要浪费leader一个线程去等待follower完成业务操作。
    • 角色Zk引入了 Observer的角色来提升性能,既可以大幅提升读取的性能
  • 算法比较
    在这里插入图片描述

05分布式共识

PoW 算法

以每个节点或服务器的计算能力,即“算力”,来竞争记账权的机制。类似于按劳分配,谁工作量大,谁拿的多。其实竞争的就是挖矿设备,看谁的挖矿设备的 CPU、GPU 等更厉害,缺点就是费电、污染环境。

PoS 算法

由系统权益代替算力来决定区块记账权,拥有的权益越大,获得记账权的概率就越大。这种方法的优点是节能,不需要挖矿了,但缺点是容易形成垄断

DPoS 算法

是一种委托权益证明算法。持有币的人可以通过投票选举出一些节点,来作为代表去记账,类似于全国人民代表大会制度,基于Pow 和Pos 算法

PoWPoSDPoS
计算消耗
结构类型去中心化去中心化去中心化(多中心)
交易量/秒PoW<PoS <DPoS
交易服务费
应用区块链平台比特币以太坊比特股

在这里插入图片描述

06 分布式事务

分布式事务

分布式事务,就是在分布式系统中运行的事务,由多个本地事务组合而成

ACID

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

1. 基于 XA 协议的二阶段提交方法

第一阶段:投票

 协调者 ----------CanCommit---------->参与者(执行操作,记录日志,但不提交)
	成功:协调者 <----------YES----------参与者        
	  
	失败:协调者 <----------NO----------  参与者                                     

第二阶段:提交

	全部成功:协调者----------DoCommit---------->参与者   
	       
	存在失败:协调者 ----------DoAbort----------->  参与者             
	  
	最后返回:协调者 <----------HaveCommitted-----------  参与者                        

不足

  • 同步阻塞问题:本地资源管理器占有临界资源时,他资源管理器如果要访问同一临界资源,会处于阻塞状态
  • 单点故障问题:事务管理器发生故障,整个系统都处于停滞状态
  • 数据不一致问题:DoCommit 请求之后,如果发生了局部网络异常,部分提交,部分没有提交

2. 三阶段提交方法

三阶段提交引入了 超时机制准备阶段

  • 如果协调者或参与者在规定的时间内没有接收到来自其他节点的响应,就会根据当前的状态选择提交或者终止整个事务
  • 在预提交阶段排除一些不一致的情况,保证在最后提交之前各参与节点的状态是一致的。

完整流程:

在这里插入图片描述

第一,CanCommit 阶段

在这里插入图片描述

第二,PreCommit 阶段

在这里插入图片描述

第三,DoCommit 阶段

在这里插入图片描述

07 分布式锁

基于数据库实现分布式锁

在这里插入图片描述

redis分布式锁

在这里插入图片描述

ZooKeeper 分布式锁

在这里插入图片描述
小结
在这里插入图片描述

在这里插入图片描述

08 分布式技术如何引爆人工智能

在这里插入图片描述

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-07-09 17:32:56  更:2021-07-09 17:32:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 22:21:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计