PolarDB-X 开源分布式数据库在韵达科技的应用实践

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 本文整理自韵达科技业务中台总监李波涛,在 2022 阿里巴巴开源开放周上的分享。本篇内容主要分为三个部分: 1. 企业背景 2. 应用实践 3. 未来展望。

本文整理自韵达科技业务中台总监李波涛,在 2022 阿里巴巴开源开放周上的分享。本篇内容主要分为三个部分: 1. 企业背景 2. 应用实践 3. 未来展望。


一、背景:企业介绍 业务诉求

韵达主要面向国内外提供快递、快运、供应链、仓储服务等,目前拥有 4 万多家快递服务网点,3000多家快运服务网点,200多家加盟商,以及 100 多家分拣中心,其中包括 4200 条快递干线,1000多条快运干线,150家城市配送站,业务覆盖了 100 多家重点城市,遍布全球 30 万个国家和地区,拥有 200 万平米仓储面积,从业人员 30 多万。

韵达每日订单量高达几千万,每个订单有多种标签信息,因此数据量巨大。其中上游业务方有各大电商平台、订单中心、大客户、智橙网、财务中心、店配团、物流团等。

打标平台主要提供了订单标签基础服务、查询统计服务、消息推送、 CSV 文件推送、订单标签处理等。其中数据存储是核心业务,数据量较大,而且是高并发访问场景。数据存储涉及到 Kafka、 CSV、Redis、MySQL 分库分表。

下游主要为业务赋能,有韵图、智能外联、大掌柜、数据中台、结算团、韵达超市、揽派系统等一共 30 多个系统。

二、应用实践:架构升级 核心能力

韵达原先的业务架构存在较多痛点:

  1. 数据无法充分发挥业务价值:传统的分库分表方案缺少数据全局视角,对复杂查询的限制较多,需要人工进行处理。
  2. 历史数据清理繁琐:数据并不需要长期存储,对于业务场景而言一般只需存储 1年。但因为分表较多,数据清理较麻烦,同时为了避免对在线业务产生影响,经常需要在业务低峰期比如凌晨,与 DBA 团队合作对历史数据做手动清理。
  3. 随着业务上升导致性能衰减:数据增加以后查询能力下降。另外,计算存储资源固定,难以扩容。

因此,韵达采用了阿里云开源 PolarDB-X 云原生分布式数据库对业务架构进行了升级,使架构性能得到了极大的提升:

  1. 运营成本降低:支持灵活设置历史数据的存储周期,可以降低存储成本。透明分布式使得使用、运维方面的成本也得以下降。高兼容 MySQL 语法对开发团队而言,学习成本也得到了降低。
  2. 提高弹性扩展能力:计算存储分离架构提供了弹性能力,可随时扩缩容,资源可以按需分配,提高了资源利用率。
  3. 高可用能力提升:引入了强一致协议,克服了主备脑裂问题。另外,多副本技术的加持使得数据更加安全可靠。

上图为升级后的基于分布式数据库的业务架构。与老架构的主要差别在于,将原先基于 MySQL 的人工分库分表使用 PolarDB-X 进行了替换,架构上并未有大调整。

此外,开发团队并不需要理解 CN 节点,也不需要与CN节点打交道,他们看到的只是一个 PolarDB-X 数据库,可以理解为一个大型的MySQL实例,不存在额外的学习成本。

PolarDB-X 提供了两种数据库模式,分别是 Auto模式和DRDS模式。官方推荐使用Auto模式,它具有较好的功能特性,我们也采用了该模式。

Auto模式分区灵活,支持自动、手动分区,单机DDL语法无需改动,可以直接在 PolarDB-X 上使用。高度兼容了 MySQL ,无需额外的学习成本。支持分区级分裂合并,解决了数据热点问题。

Auto模式下的数据库建表语法与MySQL的建表语法完全一致,无需指定分区定义,自动采用 Primary Key 做分区,非常方便。另外,PolarDB-X支持多种表类型,比如传统单表、广播表、分区表,且可以通过简单 DDL 语句进行灵活的转换,比如分区表通过partition-by即可做哈希分区,可通过pratition参数指定分区数,可以创建 broadcast 广播表,也可以通过outtable将单表转换为分区表,非常方便快捷。

PolarDB-X也提供了数据生命周期管理。

通过Local Partition By Range(create_time)指定TTL表的物理时间分区列,在物理表上的数据会以此列做时间分区。可以通过 startwith 指定初始时间分区, intervial month 意为指定数据分区间隔为一个月,也可以按天或者按年进行分区。 Expire after 指每个分区 12 个月会自动清理,清理工作不再需要开发与运维在凌晨手动完成,Pre allocate 可以指定提前创建分区的数量。

TTL在 PolarDB-X 后台通过定时任务来自动处理,节省了开发与运维的成本。

韵达订单打标项目为双活部署,每天订单打标数据量2亿+,接口查询量8000 多万。目前标签分类有 80 多种,随着业务发展和用户需求,标签分类可轻松扩展。赋能30+业务应用,提供了 API 查询、统计分析、消息推送、CSV等。

数据进行了温热分级存储,其中 Redis 存储三个月数据量,PolarDB-X存储一年的数据量。有些数据除了统计分析用途以外,还有财务对账等回溯需求,因此会被导入 PolarDB-X,以便进行方便快捷地查询。因为数据量较大,我们采用 ProtoBuf 对数据进行了压缩。

PolarDB-X 为韵达订单打标项目带来了诸多好处:

  1. 不再需要人工进行分库分表,可以通过创建来全局二级索引对打标数据进行灵活统计处理,快速满足业务方面的需求。
  2. 可以自动清理过期数据,释放空间,提高数据库操作效率,不再需要人工干预。
  3. 支持水平与纵向扩缩容,可以轻松应大促场景。
  4. PolarDB-X 兼容 MySQL 协议,降低开发人员的学习曲线,可快速从此前的人工分库分表方案迁移到PolarDB-X数据库。
  5. 支持 online schema change ,添加二级索引不锁表。
  6. 多副本数据备份方案,保证了数据安全性。

三、未来展望:社区贡献 领域探索

PolarDB-X 提供了很多优秀的功能特性,在韵达的很多场景里可以进行推广使用。韵达存在大量高并发、海量数据存储的业务场景,因此,后续会在韵达公司内部进一步做 PolarDB-X 的推广使用。

另外,也会进一步在 HTAP领域进行探索。 PolarDB-X 提供了 TP 和 AP 的处理能力,因此我们计划使用PolarDB-X替换原先 MySQL +Elasticsearch提供的能力。同时,也会将PolarDB-X与韵达已有的周边生态进行融合。

社区建设方面,PolarDB-X官方推荐部署在K8s平台上,提供了开源的数据库,也提供了开源的监控能力。后续韵达将基于Prometheus与 Grafana 做监控能力的进一步提升,比如与公司金融平台、钉钉等打通,及时了解系统运行的健康状况。

最后,韵达科技将持续在社区分享基于 PolarDB-X 开源的实战经验。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
28天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB 分布式版 V2.0,安全可靠的集中分布式一体化数据库管理软件
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。
|
2月前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
2月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
46 5
|
2月前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
73 15
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
|
3月前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
3月前
|
SQL 关系型数据库 分布式数据库
Citus 简介,将 Postgres 转换为分布式数据库
【10月更文挑战第4天】Citus 简介,将 Postgres 转换为分布式数据库
119 4
|
4月前
|
存储 NoSQL Java
分布式session-SpringSession的应用
Spring Session 提供了一种创建和管理 Servlet HttpSession 的方案,默认使用外置 Redis 存储 Session 数据,解决了 Session 共享问题。其特性包括:API 及实现用于管理用户会话、以应用容器中性方式替换 HttpSession、简化集群会话支持、管理单个浏览器实例中的多个用户会话以及通过 headers 提供会话 ID 以使用 RESTful API。Spring Session 通过 SessionRepositoryFilter 实现,拦截请求并转换 request 和 response 对象,从而实现 Session 的创建与管理。
分布式session-SpringSession的应用
|
3月前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
59 0

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB