企业宣传,产品推广,广告招商,广告投放联系seowdb

彩虹桥架构演进之路

一、前言

一年一更的彩虹桥系列又来了,在前面两期咱们分享了在稳固性和性能2个层面的一些演进&优化思绪。近期咱们针对彩虹桥 Proxy 负载平衡层面的架构做了一次性更新,目前新架构曾经部署成功,消费环境正在逐渐更新中,借此时机更新一下彩虹桥架构演进之路系列的第三篇。

二、背景

彩虹桥目前依赖 SLB 做负载平衡和节点发现,随着业务开展流量越来越高,SLB 带宽瓶颈逐渐暴露,只管在半年前做过一次性双 SLB 变革暂时处置了带宽瓶颈,但运维老本也随之变高。除了带宽瓶颈外,SLB 无法允许同区优先访问,造成难以适配双活架构。所以预备去除彩虹桥对 SLB 的强依赖,自建彩虹桥元数据中心,提供负载平衡和节点发现等才干,同时允许同区访问等才干来更好的适配双活架构。上方会详细引见一下彩虹桥元数据中心以及 SDK 关系才干的关系细节。

三、**称号解释

四、现有架构回忆

在开局引见彩虹桥元数据中心之前,咱们先来回忆一下彩虹桥目前架构,以及存在的一些痛点。

现有架构

重要痛点

五、自建元数据中心&SDK 增强

图片元数据中心独立部署

架构详解

Metadata 数据库

节点启动时

 node_info weight   config_version   cluster_name  ?  address  ?

节点运转时

 node_info  beat_version  beat_version   cluster_name  ?  address  ?

节点下线

MetaCenter( Heimdall)

初始化心跳版本号:记载一切 metadata 数据库每个节点最新 beat_version 和初始化心跳失落次数到内存

定时查问节点信息(3s 一次性),挑选可用节点并写入到内存中,提供 OpenAPI 给 SDK 调用,每个库均口头以下操作,最终会获取每个库的可用节点列表,最后把多个 list 求并集,获取最终的可用列表,写入到内存中。

查出一切列表数据后,对比内存中的 beat_version 与数据库中的 beat_version,如不相反则更新内存,假设相反说明对应节点心跳有失落,假设失落次数超越阈值,则剔除此节点。

节点列表中除了 ip、端口信息外,还有权重,启用形态属性, 这些属性都属于控制流变卦,假设产生2边数据库不分歧场景,以 config_version 最大的为准。

假设本次计算时有节点列表变动,会下发一个变卦事情到 ARK(value 为期间戳-秒),SDK 在收到次性能变卦后会立刻到 MetaCenter 拉取一次性节点列表,以补偿定时轮训的延时。

MetaCenter 提供的 OpenAPI 是经过计算后存入内存的数据,为了可以人工干预节点列表,须要允许开关一键切换至人工性能的节点列表数据。

SDK( Rainbow)

另外 SDK 允许一键灵活切换至走老架构模式(4层 SLB)

治理后盾

修正形态会去一切 metadata 数据库口头,只要一个库成功就前往成功,如一切库都修正失败,则前往失败。

 node_info enabled   config_version   ip  ?  port  ?

容灾才干

表格中的能否有影响和缺点复原期间均指 SDK-Proxy 的访问链路,Proxy-DB 链路不在范畴内。

参考以下期间线,可在30s左右成功复原。

一些思索

Q:为什么不用 sylas(得物注册中心产品)做注册中心,而是要自建元数据中心做服务发现?

彩虹桥和 sylas 均为 P0 级别服务,对稳固性要求极高,在架构设计之初须要充沛思索到相互依赖或许带来的级联缺点,在与注册中心关系同窗沟通后,选择自建彩虹桥元数据中心,成功自闭环。

Q:为什么不是传统的基于 Raft 协定的三节点来成功服务发现,而是用多套数据源做 merge?

Raft 是工程上经常使用较为宽泛的强分歧性、去中心化、高可用的共识算法,在散布式系统中,适用于高分歧性、容错性要求高的场景。但 Raft 协定须要保养指导者选举和日志复制等机制,性能开支较大,其次 Raft 协定相对复杂,在开发、保养、排障等方面会十分艰巨,反之驳回少数据源求并集的模式更繁难,同时也具有单节点缺点、整个可用区缺点以及跨区网络终止等多种复杂缺点下的容灾才干。

Q:如何在 SLB 切换到新架构的环节中保证稳固性?

可灰度:允许单个抢先节点粒度的灰度

可回滚:允许一键灵活切换至 SLB 架构

可观测:少量埋点数据可实时启动观测,有疑问可极速回滚。

六、总结

自建元数据中心后,将给彩虹桥带来一系列收益:

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender