存在的问题
网络通信异常
网络延迟
网络分区
脑裂 两个独立集群
三态
- 成功
- 失败
- 超时
- 发送过程丢失
- 结果反馈丢失
从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