分布式节点
- 无状态节点
- 有状态节点: 数据读取和写入的节点
- 宕(dàng)机节点
分布式通信
- rpc : A 节点--> B节点
分布式三态
响应失败:有可能是超时,但是处理已经成功;也有可能处理失败
- 成功
- 失败
- 超时
分布式系统调用要考虑所有调用环境的异常情况
副本
- 布式系统中为数据或服务 供的冗余
- 一致性问题
数据分布方式
哈希分布
按照数据的某一特征计算哈希值,并将哈希值与 机器中的机器建立映射关系,从而将不同哈希值的数据分布到不同的机器上
- 扩展问题:比如从4台机器扩容到5台,那么hash%4 ----> hash%5几乎所有的数据要重新迁移,如果是成倍速扩容 hash % (4*2 ) 那么 迁移一半的数据到新机器
- 解决方法:对应关系作为元数据由专门的元数据服务器管理 ,缺点需要维护大量的元数据
- 数据倾斜问题:某一个id的用户数据量超过机器的处理能力
按数据范围分布
按数据范围分布是另一个常见的数据分布式,将数据按特征值的值域范围划分为不同的区间,使得集群中每台(组)服务器处理不同区间的数据
使用范围分布数据的方式的最大优点就是可以灵活的根据数据量的具体情况拆分原有数据区间, 拆分后的数据区间可以迁移到其他机器
- 按照用户id,日期,地域等划分:将[1, 33),,[33, 90),[90, 100)分别由 3 台服务器 负责处理
按数据量分布
一致性哈希(consistent hashing)
- 算法原理
http://blog.codinglabs.org/articles/consistent-hashing.html - 改进方案
- 应用场景
基本副本协议
中心化副本控制协议
去中心化副本控制协议
- Chubby/Zookeeper的副本控制协议 : Paxos 的去中心化协议
Lease机制
Lease 是由颁发者授予的在某一有效期内的承诺。颁发者一旦发 出 lease,则无论接受方是否收到,也无论后续接收方处于何种状态,只要 lease 不过期,颁发者一 定严守承诺;另一方面,接收方在 lease 的有效期内可以使用颁发者的承诺,但一旦 lease 过期,接 收方一定不能继续使用颁发者的承诺
- 继续跟进
基于 lease 机制确定节点状态
Quorum机制
- 继续跟进