PolarDB MySQL版多主集群(库表)正式商业化。
简介
随着PolarDB MySQL版客户的不断增加,大规模头部客户不断涌入,部分头部客户业务体量规模庞大,使得目前PolarDB MySQL版的单写(一写多读)架构在特定场景下,写性能出现瓶颈。
PolarDB MySQL版全新推出多主集群(库表),实现从一写多读架构到多写多读架构的升级,主要面向SaaS多租户、游戏、电商等高并发读写的应用场景。
核心优势和能力
秒级横向写扩展
支持不同库/表在不同计算节点并发写入,最多支持32个节点同时写入。不同数据库可以在不同计算节点秒级动态调度,极大提升整体的并发读写能力。
多主互备(省去备节点)
如果某个主节点发生故障,可秒级切换到其他低流量主节点,同时由于没有额外的用于热备的闲置资源,成本降低一半。
全局只读节点
可以在全局只读节点上读取到所有写节点的数据,方便执行汇聚库的请求。
适用场景
多主集群(库表)主要面向SaaS多租户、游戏、电商等高并发读写的应用场景。
SaaS多租户场景:满足高并发性能需求,实现租户间负载均衡
场景特点:租户的数据库数量变化较快,负载变化较大,需要经常在不同的实例之间调配数据库资源,以便达到最佳用户体验。
解决方案:多主集群(库表)可帮助客户秒级将租户的数据库在不同RW节点间进行切换,或秒级增加新的RW节点承担突发流量,从而实现负载均衡。
世界服游戏及电商场景:分钟级的扩缩容,适应快速增长的业务请求
场景特点:世界服游戏及电商场景,一般采用基于中间件或者业务的分库分表场景方案。在版本更新和大促的时候往往需要快速的弹性扩容数倍的集群容量,在活动和大促结束后又需要快速缩容。然而,传统集群的扩缩容都需要迁移数据,非常复杂。
解决方案:多主集群(库表)的秒级横向扩展和透明路由功能,结合中间件或业务分库分表可以实现透明的秒级扩展,将原来数天的扩容变为分钟级。
分服游戏场景:更好的性能和扩展能力,灵活扩缩容
场景特点:在游戏成长期,数据库负载较大,且呈现为不断增长的趋势特点。通常表现为在游戏成长期期间,会不断增加数据库,导致RW节点负荷也不断增加。而在游戏衰退期,数据库负载逐渐减少,数据库会不断合并,导致RW节点的负荷也呈减少趋势。
解决方案:游戏成长期,可快速将部分数据库切换到新的RW节点,实现负载均衡;游戏衰退期,可快速将数据库聚合到少量RW节点,快速降低运作成本。
汇聚库场景:更加低成本且方便的汇聚多个写入节点的数据
场景特点:传统的集群架构下,需要有多个独立的支持业务OLTP读写请求的前端集群,然后再有一套用来汇聚所有数据的集群,汇聚库和前端集群通过DTS等数据同步工具定期同步数据。前端集群、汇聚库和DTS同步工具都需要花费额外的成本,同时涉及到多个产品的互动,操作起来很不方便。
解决方案:把前端集群迁移到多主集群(库表)下,按需增加多个计算节点。汇聚库可使用多主集群(库表)下的全局只读节点,彻底解决聚合复制链路延迟问题,同时省去聚合库的额外存储和计算备份节点的成本,整体成本下降2/3。
架构图
多主集群(库表)的架构图如下:
发布时间
2022年09月30日。
多主架构以多主集群(库表)的形态呈现,目前所有支持PolarDB的可用区都已经支持开放购买。
版本要求
多主集群(库表)目前仅支持PolarDB MySQL版8.0内核版本。
性能提升情况
经测试,随着一个集群中的数据库切换至更多的主节点(RW)上,集群整体并发读写能力几乎呈线性提升。
如下为实际测试数据。
测试背景:集群包含8个数据库,8个RW节点。
测试过程:初始情况下,8个数据库全部负载在其中一个RW节点上,然后对所有数据库同步执行相同的压力测试。压测期间,将8个数据库分别平均切换到2个RW节点、4个RW节点、8个RW节点上,观察集群整体的性能变化趋势。
性能变化趋势如下,以QPS为例:从上图可以看出,随着数据库切换至更多的RW上时,集群整体并发读写能力得到了极大的提升,几乎呈现为线性提升。