分布式理论基础

  1. 存在的问题
    1. 网络通信异常
    2. 网络分区
    3. 三态
  2. 从ACID 到CAP/ BASE
    1. 传统DBMS 中的ACID
    2. CAP
    3. BASE
  3. 一致性协议
    1. XA 规范
    2. 2PC
    3. 3PC
    4. Paxos算法
    5. RAFT算法:
    6. Bully算法
    7. Gossip协议
    8. ZAB协议

image-20190604142744558

存在的问题


网络通信异常

​ 网络延迟

网络分区

​ 脑裂 两个独立集群

三态

  • 成功
  • 失败
  • 超时
    • 发送过程丢失
    • 结果反馈丢失

从ACID 到CAP/ BASE


传统DBMS 中的ACID

  • Atomicity 原子性
  • Isolation 隔离线
    • 未授权读取(RU);
    • 授权读取(RC);
    • 可重复读取(RR);
    • 串行化(S)
  • Consistency 一致性
  • Durability 持久性

CAP

  • A 高可用
  • C 一致性
  • P 分区 副本

在C和A之中寻找平衡

BASE

  • Basically Acaliable
    • 响应时间损失
    • 功能上降级
  • Soft state
  • Eventually consistent

不止分布式环境,现代数据库主从复制

一致性协议


​ 一致性问题的解法就是分布式时钟,分布式事务与一致性算法。

​ 选举、多数派、租约

​ 顺序时钟

XA 规范

2PC

​ 同步阻塞、无限制等待、 存在脑裂问题

3PC

​ 缩小阻塞范围、加入超时 、存在脑裂问题

Paxos算法

https://github.com/Tencent/phxpaxos 腾讯微信后台的实现

RAFT算法:

https://www.jianshu.com/p/8279d6fd65bb

https://redis.io/topics/cluster-spec

Bully算法

http://www.cs.colostate.edu/~cs551/CourseNotes/Synchronization/BullyExample.html

​ 实现:Es 主从模式 (节点、分片、副本) 容易出现脑裂,所以使用过半来解决

​ ES的写入优化

Gossip协议

​ 实现:redis (gossip协议。p2p) 主从模式 ,主从复制 持久化(AOF、RDB)

https://www.v2ex.com/t/453036

ZAB协议

​ 实现 : zk(hadoop、hbase 、kafka)


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 951488791@qq.com

文章标题:分布式理论基础

字数:351

本文作者:zhengyumin

发布时间:2019-06-03, 20:34:37

最后更新:2019-08-20, 09:46:49

原始链接:http://zyumin.github.io/2019/06/03/Overview_Distributed/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。