路由系统设计
2019-09-26 本文已影响0人
飞天的龙王
总则: 数据分段,分层,分时间,极大可能性确认,渐进性实施原则。
路由表数据结构设计:
1. 路由表数据用bit数组下标代表用户ID: 在大数据情况下省空间
2. 用户ID保存空间设计: 用户ID用bit数组实现,4位数组标志一个用户ID(分别代表路由和用户状态),这样极大节约空间
3. 防止ID不连续设计: 用一个分段slot table当索引,每个索引ID指向一个bit序列段,每个bit序列段保存固定数量的用户ID映射信息。
4. 路由映射关系设计: 4bit信息中的路由代表逻辑机房。可以根据情况设计一个逻辑路由到具体机房的映射关系,根据正常(物理机房),灾备(灾备机房),分流(用户ID取模)情况路由
数据一致性设计:
1. 路由信息md5记录日志,后台程序定期比对
2. 路由数据复制进度check-point检查,checkpiont点大于可变状态时间点时候才开始更新路由状态到最新
路由更新设计:
1. 设计路由中间态(禁写)
2. 路由信息多版本(支持版本回退)
3. 数据准备与数据更新分离策略(新版本路由推送到分布式缓存,并写新版本号 -> zk监听新版本变动触发各机房执行禁写中间态变更 -> 全部节点更新禁写完成后,drc数据复制到新机房 -> 检查位点时间大于禁写完成时间一段时间 -> 各个机房分别执行缓存拉取 -> 更新完成后,原子更改当前路由版本号为最新版本号)
4. 统一管控系统管控路由更新: 然后由各个机房的管控系统agent代理推送到分布式缓存触发更新机制
5. 用户更新实施: 分时统计,结合用户行为权重,打散用户,安排路由表更新(同时间段下同slot段下同源同目标机房分为一批次更新用户)设置默认机房路由,不计入路由表,用于增量更新
多层路由设计
1. 统一接入层设计: 路由信息md5记录日志,后台程序定期比对