背景
实时路径计算服务作为动态加速平台核心组件,针对动态交互数据无法缓存于边缘节点,需要实时与客户源站进行交互,同时考虑客户接入点到客户源站之间复杂网络情况以及客户源站突发峰值的不确定性,实时路径计算服务能够避开网络拥塞、突发流量、源站服务压力高、服务设备宕机等诸多不利因素导致丢包、响应慢、服务不稳定等问题,叠加压缩传输、协议优化、链路复用等技术,承担起动态加速平台的智能选路功能
路径计算服务目前部署于全国三大区域机房内,每个区域内三台机器组成一个服务集群,三大区域之间采用主备备模式,全网CDN边缘主机组的基础探测数据都往一个主区域内的路径计算服务集群上报,故障情况下由域名调度实现主备区域角色的切换来解决服务的高可用性,不能利用备区域实现分布式计算及容错能力
存在的问题
随着CDN业务发展,边缘主机组增多,基础探测数据量增大,导致实时路径计算服务压力增大,此时只能横向扩展服务,压力还是存在于一个区域内的服务集群里,其它备区域服务集群则很空闲,无法垂直扩展分摊压力
基础探测数据不能按区域就近上报,全网CDN边缘主机组都往一个主区域内的服务集群上报,如果某局部网络故障,将导致此故障地区无法上报基础探测数据和获取最优路径结果;如果不幸主区域内的服务集群故障(主区域表示全网基础探测数据都往此汇聚的区域,基础探测数据是路径计算的基础数据),将导致主区域无法提供路径计算服务。对于以上故障,如果进行边缘节点域名调度切换到另一个备区域,由于各区域路径计算集群之间没有实现数据同步,导致切过来的一段时间路径计算不准确(缺少最新的各层级基础探测数据),影响客户加速
优化目的
实现路径计算服务在不同区域内的路径计算服务集群之间的数据同步功能,打破各区域数据孤岛问题而导致的边缘主机组基础探测数据无法在各区域来回切换上报,并可以按区域实现垂直扩展,达到去中心化,解决高可用的同时,也提高了计算速度
各区域具备数据同步功能后,每一个区域内都是全量边缘主机组的基础探测数据(包括路径的中间节点等),边缘主机组基础探测数据根据域名调度解析按区域就近上报(而不是只上报到一个主区域),在故障情况下,可以通过域名调度切换到一个可用的区域,零时延切换为用户继续提供准确的路径计算服务
优化方法
整体服务架构
集群间数据同步模块
1.路径计算服务接收到边缘主机组上报的基础探测数据和其它区域集群同步过来的基础探测数据
2.对收到的基础探测数据,判断是增量数据还是同步数据
3.1如果是增量数据,则进行路径计算并下发结果,基础探测数据存储到本区域集群
3.2增量数据同时也需要同步一份到其它区域,通过自定义消息格式控制数据的不同状态,并使用grpc+proto数据协议同步到其它区域集群
4.数据存储模块,存储增量数据与同步数据
同步数据接收模块
1.边缘节点基础探测数据开始上报
2.域名解析,查看上报区域是否发送改变
3.1如果上报区域发生改变,则上报到最新调整后的区域路径计算服务,并开始路径计算
3.2如果上报区域没有改变,则上报到原有区域路径计算服务
4.通过自定义消息格式控制数据的不同状态,并使用grpc+proto数据协议同步到其它区域集群
优点和效果
实现路径计算服务在不同区域内的路径计算服务集群之间的数据同步功能,打破各区域数据孤岛问题而导致的边缘主机组基础探测数据无法在各区域来回切换上报,并可以按区域实现垂直扩展,达到去中心化,解决高可用的同时,也提高了计算速度
各区域具备数据同步功能后,每一个区域内都是全量边缘主机组的基础探测数据(包括路径的中间节点等),边缘主机组基础探测数据根据域名调度解析按区域就近上报(而不是只上报到一个主区域),在故障情况下,可以通过域名调度切换到一个可用的区域,零时延切换为用户继续提供准确的路径计算服务