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