基本概念

2020-06-11  本文已影响0人  qiezhian

数据分布 -- 一致性哈希 + 虚拟节点
数据访问 -- 负载均衡,客户端缓存零跳路由,路由版本号管理
一致性保证 -- 核查保证最终一致性,记录版本号
容错 -- 数据迁移
自动扩缩容 -- 弹性伸缩

面向NFV架构、基于key-value数据模型、并可以N-way负载均衡、弹性扩缩、自动容错的高可用分布式数据库。

如何实现的呢?
数据分布: 一致性哈希算法+虚拟节点,解决了两个关键问题,一是保证了数据的均衡分布,二是减少了节点宕机带来的数据迁移量,避免系统“雪崩”。
(1. 通过 md5 将 key 哈希出一个 32 位的 16 进制哈希值

  1. 将这个哈希值映射到一个虚拟节点
  2. 将这个虚拟节点映射到一个物理节点)
    关键之处在于虚拟节点的数量比物理节点数多得多,甚至很多时候会将虚拟节点的数量设置为 “尽可能多”。这样新哈希表的前两段就固定不变了,当增删物理节点时,只是对虚拟节点进行必要的重新分配的过程。

数据访问: 数据分布其实就是一张哈希映射表(虚拟节点映射到一个物理节点),就是路由表,客户端缓存这张路由表,就可以直接定位数据所在节点,直接向该节点发起数据请求。
关键点:1. 如何保证插件端和服务端的路由一致性? -- 推拉结合,首先服务侧更新路由表,会主动向客户端推送;其次,客户端会定时从服务侧拉取路由表;最后,如果是路由版本较低导致访问数据失败,则也主动拉取路由;

容错、一致性保证:在网络故障、节点宕机等异常情况下如何保证数据一致性

  1. 脑裂
  2. 主备切换(快速恢复访问) --> 更新路由 --> 计算需要迁移的数据分区(恢复丢失的备份) --> 数据迁移 --> 更新路由
  3. 最终一致性 -- 记录版本号 + 核查机制 ,保证最终一致性

自动扩缩容

  1. 收集资源workload(cpu/内存)情况,主控收集到

分级升级
1.升级时候用户不下线,新用户接入和转发中断时间在10s以内,额外资源小于30%的业务升级方式。其基本过程为:拉起一个新版本的平面,将业务从旧平面逐步迁移到新版本平面。新旧平面之间逐步批次进行数据同步和业务迁移。逐步迁移,所以不需要一倍额外资源,只需要少量的资源。
资源预留 --> 准备阶段(资源检查、拉起新版本最小部署形态) --> 拨测阶段 --> 迁移阶段 --> 删除旧版本 (新版本回退)

上一篇下一篇

猜你喜欢

热点阅读