暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PolarDB在菜鸟的实战总结

原创 陈宗志(暴跳) 2023-07-26
438

PolarDB是阿里巴巴自研的新一代云原关系型数据库,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。PolarDB实现了三项创新:第一,业内首次实现内存与计算、存储的三层解耦,实现内存池化,使得弹性能力呈数量级提升,同时大幅度降低成本;第二,上线多主架构,进一步提升可用性、并发处理、弹性能力,高效应对像“双11”一样的流量洪峰;第三,成为真正的HTAP数据库系统,可同时处理OLTP和OLAP型混合负载。菜鸟基于PolarDB,在物流场景下也做一些实战的尝试,目前取得的效果也非常的不错。



PolarDB(这里指PolarDB For MySQL)是一个基于共享存储技术的云原生数据库。













架构思路:共享存储架构

通过 RDMA 快速网络让上层的数据库内核看起来像是在使用本地的磁盘,实际上是分布式存储。上面可以有多个独立计算节点,一般是一写多读,也可以做多写多读,计算和存储分离,这就是共享存储架构。

POLARDB 有一个 PolarProxy,也就是前面的网关代理,PolarProxy 会对客户需求做分发,将写请求分配到主节点,而对于读请求而言,则会根据负载均衡以及读节点的状态实现请求分配,这样就能够尽可能地实现资源的最大化利用以及性能的提升。



高性能:

1:PolarDB-MySQL深度优化数据库内核,同时采用物理复制、RDMA高速网络和分布式共享存储,大幅提高性能。



链接


https://ata.alibaba-inc.com/articles/253137



2:PolarDB支持秒级加列&并行执行,减少停机窗口








高可用:

1:计算高可用: 主节点和只读节点之间采用 Active-Active 的 Failover 方式,提供 DB 的高可用服务。








注:节点5-10秒完成切换,在途事务不中断;POLARDB 突破了 MySQL、PG 等数据库对于单节点规格和可扩展性的限定,能够实现 100TB 存储容量以及每个节点100万 QPS 的性能。

相关文档:https://ata.alibaba-inc.com/articles/90561



2:存储高可用:在存储层,每个数据块都采用三副本高可用技术,同时对于 Raft 协议进行了修改,通过实现并行式的 Raft 协议保证了三副本数据块之间的数据一致性,提供了金融级高可用。备份可做到秒级。

3:双机房容灾








极致弹性:

在一写多读的情况下,POLARDB 能够实现快速伸缩。存储和计算分离能够带来的另一大好处是降低成本,因为存储和计算节点可以独立地进行弹性伸缩,充分体现成本优势。








注:polardb最多支持15个读节点;垂直升降配5分钟即可完成,水平扩缩节点2-4分钟即可完成

生态兼容

PolarDB 100%兼容MySQL协议及SQL语法及函数。








注:精卫已经支持了,TDDL客户端已经能够支持,TDDL配置流在2月底,TT现在不支持,需要推动ODPS兼容,12月底已经提需求,需要推动TT排期,预期2月底可以上线。

适用场景

场景1:TP场景,单库单表替代分库分表








带来的收益:

1.

天然支持跨表、跨行事务

2.

可以通过指定任意二级索引进行自由检索,而分库分表的每个检索都必须指定分片键

3.

拥有严格趋势递增的主键功能,写入性能优于分库分表,在数据行比较大的情况下更明显

(在单行大小0.8kb的场景下,单节点有2.5倍的写入性能提升)

实现原理:

底层的存储模型就是用的mysql的单表模型,使用起来的“体感”就跟mysql单表一样

当前的不足:

1.每个只读节点的buffer pool都是独立的,内存中的数据存在冗余,比“分库分表”费内存

(当前已经有了“分布式内存池”技术来解决这个问题,但没有被大规模验证)

2.innodb引擎还未增加压缩功能(正在开发中)

新特性






1:行级并发写入,多个master节点的行级并发写入,突破单点写入瓶颈

2:polarFusion实现事务、锁、缓存信息的全局协调

3:高度融合RDMA,实现高速的跨节点信息协调



场景2:HTAP一体化
















带来的收益:

1.

同时支持高并发点查、“中等量级”的OLAP查询,在绝大多数情况下可以实现TP、多维检索、AP查询一体化。

2.

一体化后数据同步问题、同步一致性问题都不存在了,额外的开发与维护成本也没了

实现原理:

1:单机并行








2:跨机并行








3:行列混存






4.SQL Parser/优化器:面向行列混合存储的CBO优化器,可以根据代价自动选择行存或者列存执行查询请求

当前的不足:

1.在“超重”的AP查询方面有所不足。比如对几千万行甚至几亿行的数据集进行聚合查询。

2.列查询能力跟ADB差不多

3:与传统OLAP数据库ClickHouse相比:PolarDB MySQL开启列存索引后,与ClickHouse性能相比各有优劣。其中PolarDB MySQL在单表Scan/AGG、Join等场景中表现突出。未来PolarDB MySQL的列存索引特性将在聚合加速、窗口函数等方面持续优化和突破。

成本对比

常用TP数据库成本对比

存储成本

假设基于ESSD架构的polardb跟cddc一样,都是按照硬件成本价收费



磁盘规格

数据压缩

存放1T mysql裸数据存储费用/月

是否按需付费

cddc

PL0

无压缩功能



443元

接近按需付费

cddc

PL1

886元

基于polarFS的polardb,innodb引擎

-

弹内无压缩功能

(弹外有基于FPGA的压缩)

1333元

按需付费

基于polarFS的polardb,x-engin引擎

ZSTD

1333元 * 压缩率



基于ESSD的polardb,innodb引擎

PL0

功能在开发中

(假设已经可用)

443元 * 压缩率

接近按需付费

基于ESSD的polardb,innodb引擎

PL1

886元 * 压缩率

基于ESSD的polardb,x-engin引擎

PL0

ZSTD

443元 * 压缩率

基于ESSD的polardb,x-engin引擎

PL1

886元 * 压缩率

****(诺曼底申请模式)

-

ZSTD

1002 * 压缩率

按总包付费




计算成本

cddc,polardb收取的是阿里云ecs的成本价

oceanbase收取的是阿里云ecs的成本价+liscence费用(按核收取)

polardb存计分离,扩缩容很轻量,计算资源可以按需申请,非常灵活。

收费参考

扩缩容时长

cddc

mysql.z2.2xlarge.25c(16core 32G) 的实例 1044元/月

一个实例由三个节点组成,收费按实例收

裹裹实操库用了8个这样的实例, (高峰期cpu30%,内存69%)。 计算费用8352元/月

提工单人工处理 , 整个流程达数小时

polardb

单个polar.mysql.x8.2xlarge(16core 128G)节点 3600元/月

梧桐项目用了1个主节点+1个只读节点,总计算费用7200元/月

支持自助扩缩、预设阈值自动扩缩。分钟级完成。


实战场景

控制塔






实战结果 一句话成果:在控制塔的数据链路场景下,用PolarDB替换mysql+精卫+ob,性能无损,成本下降91.4%



性能指标

原数据链路



迁移到TAB数据服务



平均RT



平均QPS



主要服务名称



平均RT



平均QPS



约3.7



6900 读:约4000 写:约2900



cainiao-ecc.transient_update_by_primary_key_selective



6.0991



3.7529



1494.65



6928.1999



cainiao-ecc.transient_delete_by_primary_key



5.187



866.0333



cainiao-ecc.transient_insert_selective



6.1933



725.9833



cainiao-ecc.transient_get_by_id



2.0638



1511.2333



cainiao-ecc.transient_get_by_biz_id



2.1809



2330.3










M2C裹配-商家服务(微信沉睡粉丝唤醒)(已落地)

菜鸟裹裹商家寄件维护了30个公众号,共1600W+粉丝。虽然公众号粉丝众多,但是大部分都是沉睡粉丝(即近30天无寄件行为)。为了能增加粉丝活跃度,提供寄件转化单量,业务急需对1600W粉丝进行触达,将优惠、活动等信息及时传递给微信粉丝。微信目前提供不限次数的给粉丝发送模板消息的能力,业务希望使用此免费通道达到最大范围的粉丝触达。在触达完成后,根据触达成功率、消息点开率、菜单打开率、优惠券领取等行为数据以及下单单量这一目标数据来分析触达文案、优惠方式的效果,进一步优化触达的内容,达到更好的效果。

1、PolarDB单表方案,天然支持以公众号进行统计分析。

2、8亿数据量,存储成本预计300/ 月

PolarDB成本

成本

数据量

金额

存储成本

8亿

预计300/ 月




接入成本

事项

是否需要人工介入

成本

数据库申请

自助申请,自动生成实例

0.5人日

DMS配置

一键同步

0

数据库表结构设计

与Mysql操作一致,使用DMS操作

无新增成本

Java代码

新增数据库配置

0.5人日

sql

与mysql语法一致

无新增成本

总计



1人日


数据库性能表现

数据库QPS最高到2000, CPU使用率最高到30%,表现平稳








「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论