分布式一致
CAP 与 BASE 理论
- 《从分布式一致性谈到CAP理论、BASE理论》
- 一致性分类:强一致(立即一致);弱一致(可在单位时间内实现一致,比如秒级);最终一致(弱一致的一种,一定时间内最终一致)
- CAP:一致性、可用性、分区容错性(网络故障引起)
- BASE:Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)
- BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。
分布式锁
分布式一致性算法
PAXOS
幂等
- 《分布式系统—幂等性设计》
- 幂等特性的作用:该资源具备幂等性,请求方无需担心重复调用会产生错误。
- 常见保证幂等的手段:MVCC(类似于乐观锁)、去重表(唯一索引)、悲观锁、一次性token、序列号方式。
分布式一致方案
分布式 Leader 节点选举
TCC(Try/Confirm/Cancel) 柔性事务
- 《传统事务与柔性事务》
- 基于BASE理论:基本可用、柔性状态、最终一致。
- 解决方案:记录日志+补偿(正向补充或者回滚)、消息重试(要求程序要幂等);“无锁设计”、采用乐观锁机制。
分布式文件系统
唯一ID 生成
全局唯一ID
- 《高并发分布式系统中生成全局唯一Id汇总》
- Twitter 方案(Snowflake 算法):41位时间戳+10位机器标识(比如IP,服务器名称等)+12位序列号(本地计数器)
- Flicker 方案:MySQL自增ID + “REPLACE INTO XXX:SELECT LAST_INSERT_ID();”
- UUID:缺点,无序,字符串过长,占用空间,影响检索性能。
- MongoDB 方案:利用 ObjectId。缺点:不能自增。
- 《TDDL 在分布式下的SEQUENCE原理》
- 在数据库中创建 sequence 表,用于记录,当前已被占用的id最大值。
- 每台客户端主机取一个id区间(比如 1000~2000)缓存在本地,并更新 sequence 表中的id最大值记录。
- 客户端主机之间取不同的id区间,用完再取,使用乐观锁机制控制并发。
一致性Hash算法
Popular Repositories
Repositories contribute to