美文网首页
分布式系统原理笔记

分布式系统原理笔记

作者: 吃番茄的土拨鼠 | 来源:发表于2018-07-27 10:43 被阅读0次

1. tcp只保证tcp棧消息不丢失,不能保证应用层

2.系统状态:成功,失败,未知

3.一致性类型

强一致(mysql事务),顺序一致性,会话一致性,

最终一致性(paox)

,弱一致性(mysql同步)

1.2 分布式系统评价指标

1.性能  2.可用性 3.扩展性 4.一致性

2.1 数据分布方式

1.hash   

优点:只记录分桶数即可

缺点:扩容数据移动大,值如果分布不均衡发生数据倾斜,

2.按数据范围

缺点:需要维护数据分布的元数据

  3.按数据量切分 chunk

缺点:

2.2 副本的数据分布

1.以机器为单位

缺点:

(1)不好扩容(每台机器是1/3的分片),扩容必须增加三台

(2)一个节点宕机,   copy全量数据

2.数据分段,一个机器多个分片

优点:一个节点宕机,能从所有节点同步数据

2.3 副本协议

1.中心化

更新只针对primary 节点,然后同步给副本

流程:

(1)

2.去中心化

paox

3 分布式协议

1.lease

流程:

   (1)master 想slave同步时发送一个lease,带有有效期。保证在此有效期不对数据做修改

(2)slave上的lease,删除此数据

(3)master收到更新请求

     <1>会阻塞请求

     优化:(开始更新时,不发放lease,或发放的lease是以发放里最大的)

      <2>等待发出的lease过期。

      优化:master主动请求slave清除lease

读取流程:

(1)发现数据有cache,并且lease 未过期,直接本地返回。否则转给master

用途:使用lease选主,中央节点Q给master 发送一个特殊lease,每次收到slave心跳发放一个lease

2.quorum

定义:更新是一系列顺序过程,wi(i是版本号)

类型:

 write-all-read-one(所有节点写成功,才算成功)=

w + r = n+1

缺点:

必须读取到w个节点,才能确定当前成功的最高版本

4.两阶段提交过程

角色:一个中心化协调者,n个参与者

流程:

 协调者:(1)本地写入日子begin-commit ,进入wait状态(2)向参与者发送prpare

(3)等待参与者对prepare的响应,收到全部vote-commit,写入gloabl-commit日志,进入commit状态,并发送gloabl-commit消息。只要收到一个abort,写入gloabl-abort,进入abort状态,发送gloabl-abort消息

(4)等待确认消息,都收到后写入end-transaction日志

参与者(1)写入init日志,进入init状态 (2)等待协调者prepare消息 (3)如果能提交,写入ready日志,进入ready状态(3.1)向协调者发送vote-commit (3.2)等待协调者消息,如果是gloabl-commit,写入commit日志,进入commit状态。如果是gloabl-abort,写入abort日志,进入abort状态,向协调者发送确认消息。

(4)不能提交,写入abort日志,进入abort状态,发送vote-abort消息,后续可响应gloabl-abort消息

缺点: 没有容错能力,如果协调者发送gloabl-commit或者gloabl-abort超时,需要一直不断的重发。如果有参与者宕机或者网络断开,流程卡住了。或者参与者在进入ready状态,等待gloabl-commit超时,只有不断发送vote-commit,如果和协调者网络断开,流程卡住了。

5.mvcc

类似svn。每个事务一个分支,后提交的如果没有冲突就合并。有则失败。

保证不影响真正的数据,有2种方式。(1)copy后在修改,类似svn的checkout (2)只提交修改记录,然后从基础版本计算,类似git。    

6.paxos

角色: proper,acceptor,learner

流程:每轮都有个编号(下面用b来表示)

proper 端

  准备阶段

    (1)发送Proper(b) 

   (2)如果收到一个Reject(B),本轮失败,轮次号加1(b+1)重新执行步骤一

 批准阶段

 (3)如果收到的Promise(b,vi)的数量超过半数,如果v都是空,可以设置任意的值。否则选择i最大的v。广播accept(b,v)

(4)如果收到nack(b),轮次号加1(b+1)重新执行步骤一

acceptor端:

准备阶段:

(1)接收proper(b)

     参数B是之前接收到的最大轮次号,V是之前选定的值(可为空)

   如果b > B ,回复promise(b,V_B),设置B= b。否则回复Rejec(B)

(2)接收accept(b,v)

如果b>B,设置V= v,广播accept消息,否则回复Nack(B),

相关文章

  • dubbo

    一、基础知识 1、分布式基础理论 1.1)、什么是分布式系统? 《分布式系统原理与范型》定义: “分布式系统是若干...

  • Dubbo笔记1

    一、基础知识。·1、分布式基础理论。·1.1)、什么是分布式系统?。《分布式系统原理与范型》定义:“分布式系统是若...

  • 分布式系统原理笔记

    1. tcp只保证tcp棧消息不丢失,不能保证应用层 2.系统状态:成功,失败,未知 3.一致性类型 强一致(my...

  • Dubbo概述(就是一些没用的东西)

    分布式基础理论 1.1)、什么是分布式系统? 《分布式系统原理与范型》定义: “分布式系统是若干独立计算机的集合,...

  • Dubbo服务注册与发现

    @[toc] 一、分布式基本理论 1.1、分布式基本定义 《分布式系统原理与范型》定义:“分布式系统是若干独立计算...

  • SpringBoot系列之集成Dubbo示例教程

    一、分布式基本理论 1.1、分布式基本定义 《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些...

  • 深入理解dubbo-原理概述

    Dubbo官网 什么是分布式系统 《分布式系统原理与范型》定义:分布式系统是若干独立计算机的集合,这些计算机对于用...

  • [总结]MIT-6.824分布式课程-Mapduce实验

    MIT 6.824分布式系统课程,是一门著名的讲解分布式系统设计原理的课程。通过课程讲解和实验结合来学习分布式系统...

  • 2018-07-05

    分布式一致性问题 分布式系统中的数据一致问题 线程池的核心原理 设计秒杀系统

  • 【图文动画详解原理系列】9.分布式系统架构设计

    【图文动画详解原理系列】9.分布式系统架构设计

网友评论

      本文标题:分布式系统原理笔记

      本文链接:https://www.haomeiwen.com/subject/vekapftx.html