阿里云数据库高级产品专家,多年数据库相关运维和产品经验,现负责PolarDB for MySQL的产品管理、方案设计和特性规划工作。
>>>
章颖强(江疑)
阿里云数据库资深技术专家,PolarDB多主架构/Serverless/事务引擎研发负责人。
>>>
王林平(君远)
阿里云高级解决方案架构师,从事数据库运维、架构、售前工作16年,现负责泛互联网数据库解决方案工作。
点击查看完整对话视频
高见:PolarDB for MySQL是阿里巴巴自研的新一代云原生关系型数据,PolarDB集群版采用存储和计算分离的架构,集群中有一个主节点可读可写和至少一个只读节点。随着PolarDB for MySQL引擎客户的不断增加,大规模头部客户不断涌入,部分头部客户业务体量规模庞大,使得目前PolarDB for MySQL引擎的一写多读架构在特定场景下,写性能出现瓶颈。
本次PolarDB for MySQL多主架构集群版的发布,实现了集群架构从一写多读到多写多读升级,以及写性能的横向扩展,让用户购买的资源得到了最大化的利用。
君远:众所周知,PolarDB for MySQL以其100%兼容MySQL、高性能、高稳定性、高弹性、大存储、HTAP等优势能力,受到国内外数据库客户的青睐,在关系型数据库市场占据了重要的位置。从在业务发展初期,数据量和并发访问量较小的情况下,客户利用PolarDB的写节点可以轻松满足各类业务数据的存储和读取。随着业务发展,业务复杂度、数据量、并发访问量逐步增加,当前PolarDB规格已经不能满足业务需求情况下,客户需要升配PolarDB的写节点规格,来支撑数据量和并发访问量的快速增长。此方案的优势是操作简单、业务无需改造、升配时间短;不足之处是写节点受限于本地服务器资源规格上限。目前PolarDB单节点最大规格是88核710GB,如果客户业务上出现高并发、复杂读流量场景,读流量和写流量也会互相影响,导致业务受损。在这种业务场景下,很多客户需要增加读节点,利用读写分离提高系统的读承载能力,以确保客户支持更多的业务、更多数据、更多的访问量。PolarDB为解决读节点延迟而读不到最新数据的问题,通过数据库代理提供最终一致性、会话一致性、全局一致性等多级读一致性能力,以满足客户在不同场景下对一致性级别的要求。通过一写多读和读写分离一致性级别,PolarDB满足了大部分客户对数据库扩展性的需求。但是当客户希望横向扩展写能力、需要写隔离、支撑写业务的快速切换时,读写分离就有些力不从心,需要数据库能提供写扩展能力来满足业务需求。不少客户在业务发展初期为开发降低开发成本和架构成本,以及部分to B客户为了产品输出、部署简单,采用多个业务模块存储在一套数据库的方式,PolarDB有不少客户就是这样的。随着业务业务持续发展,数据量、访问量持续增加,不同业务模块的写特点也有可能不同,对数据库写TPS的诉求越来越高,会面临以下问题:
高见:PolarDB for MySQL的多主架构集群版已经做了灰度发布,前面已经有很多重量级的客户进行了功能的试用,并且有部分客户已经将生产业务搬到了多主架构集群版上。那么客户真实的使用情况如何,能不能解决客户的问题,我们来听一下来自客户的反馈。 君远:在我服务的客户里有一类企业服务商客户,他们的业务特点和开发模式非常适合多主架构集群版。其中一个客户,业务上有一个基础平台系统和五六个核心业务系统。不同业务系统之间以及业务系统和基础平台之间有数据交互,他们云上的数据库架构是基础平台和业务系统的库做垂直拆分,采用这样的架构出于满足写扩展和写隔离的诉求,有十几个核心数据库实例,这些数据库之间由于业务侧需求,有跨库数据访问的诉求,通过数据复制工具进行不同数据库之间的数据复制,形成了复杂的级联复制链路,大大增加了维护数据库成本和维护成本,同时由于复制链路不稳定,当数据复制延迟是业务侧服务会一定程度上受损。为解决这些问题,该客户提出用一套高规格、多实例数据库来承载基础平台系统和业务系统数据库的规划,来降低开发难度、降低输出数据库成本、降低部署难度、提高健壮性和稳定性。该需求的核心诉求是写扩展、写隔离、开发简单、跨数据库节点聚合查询数据。首先,希望数据库方案支持写扩展和写隔离,能快速扩展写节点,同时支持写隔离用于隔离基础平台和业务系统的高并发写,以免在业务业务的高峰期出现写争抢以及出现A业务的写影响了B业务,在功能、性能、容量上满足各业务模块对并发写的诉求;其次,需要能支持不同数据库的跨节点数据库数据聚合查询,降低业务侧的开发难度;第三,如果其中一个数据库写节点出现异常,希望可以快速切换和恢复。在客户提出这个需求的时候,我们也在规划多主架构集群版产品形态,基于客户的需求和客户进行了多轮共创。写扩展和写隔离是多主架构集群版核心能力,可以天然满足客户需求;跨数据库节点的数据聚合查询,我们在考虑多种实现方式以及方案交付及时性权衡后,提出用全局读节点来满足客户的跨数据库聚合查询的诉求,并且可以通过智能代理进行智能分流,不需要客户针对不同节点进行业务适配,客户在理解了我们的技术实现后表示可以满足业务需求。对于数据库写节点异常快速切换的能力,我们提供了两个方案:方案一:基于共享存储在不同写节点切换数据库;