作者:李家林 安能物流数据库团队负责人
本文以安能物流作为案例,探讨了在数字化转型中,企业如何利用 TiDB 分布式数据库来应答简单的业务需要和挑战。
安能物流作为中国当先的综合型物流团体,须要应答大规模的业务流程,面临着外围结算零碎所带来的数据库挑战。安能将结算零碎 all in TiDB,克服传统 MySQL 数据库所面临的瓶颈,实现安稳迁徙和性能晋升的同时,打造一栈式物流数据平台,减速数字化降级。
对于安能物流
安能物流(简称:安能)成立于 2010年,是中国当先的综合型物流团体,为企业组织及消费者提供平安、便捷、优质、高效的物流服务。截止到目前安能物流自有员工 20,000 多名,自建 136 个分拨转运核心,乡镇笼罩高达 98%以上,服务范畴遍布全国。安能自 2010 年成立开始,前后经验了七轮国内顶级资本的融资,于 2021 年双 11 在港交所胜利上市,成为“港股快运第一股”。在快运行业,安能领有中国零担快运市场最大的加盟网络,全网有 30,000 多家末端加盟商网点,自营车头和车挂数量高达 9,000多台。在产品服务方面,安能提供多样化的产品和特色业务,以满足不同用户的需要 。
TiDB 在安能结算零碎的利用
安能结算零碎作为公司最外围的业务零碎,承载了总部 与末端 加盟商网点所有费用结算业务,包含: 账户治理、充值、开票、交易、调账、对账、代收、代付、税差等全费用结算业务流程解决。 从零碎的逻辑架构图来看,其性能及业务解决流程也是绝对简单的,目前该套零碎承载业务量: 日均 450,000 票,出货量 48,000 吨,反对末端 36,000 家网点实时开单算费扣款和定时批处理调账,日均用户数 3,800,调用量 5,000 万以上。
安能在 2017 年对结算零碎进行了重构,抉择了过后较为通用支流的 MySQL+ 数据库代理中间件分库分表的数据库架构,截止到 2023 年切换到 TiDB 之前,这套 MySQL 伪分布式数据库集群曾经运行了 6 年。在数据量方面:外围业务表 4 张,单表字段 360+,共分了 8 个库;单表数据 3 亿+,2TB 大小。零碎并发状况:30,000 多家网点开单高峰期集中在 16:30 -19:30 三小时内实现,数据库 QPS 均值为每秒 20,000,零碎均匀响应工夫在 80-100ms 内。
为了防止同一个网点查问或解决数据时呈现跨库问题,采纳以网点编码作为分库分表的路由规定。为了保障单库单表数据量的平衡,安能还将产粮区如华东、华南和非产粮区如西南、东南区域的网点进行互相组合后放在同一个库同一个表中。即便如此,因为业务的一直增长,地区产业布局的变动,网点货量的变动导致原结算零碎 MySQL 数据库面临越来越大的挑战,次要体现在:基于网点编码的分库分表路由规定,导致单库单表数据分布不均,存在数据热点问题;基于网点编码的分库分表路由规定,当数据量一直增长,数据库主库节点扩大复杂度高;MySQL 5.7 不反对表构造在线变更,零碎变更停机工夫长,导致业务可用性升高;Mycat 不齐全反对规范 SQL 语法,导致研发侧代码改变较大;数据同步到上游进行剖析时须要解决多库多表数据合并问题。
基于以上面临的诸多挑战,安能在 2020 年开始思考将现有的这套结算的 MySQL 伪分布式集群找一个真正的分布式数据库进行替换。除了要思考到结算零碎简单的业务解决流程外,还要思考数据的实时性、准确性、高可用等诸多要求,通过一系列考查评估,最终安能抉择了 TiDB 作为替换结算 MySQL 的最佳产品。
为什么抉择 TiDB?这和其余抉择 TiDB 用户的关注点相似。首先,TiDB 反对一键程度扩容。第二,TiDB 提供金融级高可用。第三, 减少了在线数据的生命周期,同时保证系统响应时长。第四,TiDB 高度兼容 MySQL,原来的这套 MySQL 数据库在代码侧不做改变,能够做到平滑迁徙。第五,TiDB 反对表构造的在线变更,缩小了零碎的停机工夫,进步了业务可用性。TiDB 6.5 版本的 Online DDL 离业务的需要还有肯定差距,安能也快乐地看到 TiDB 7.1 版本 Online DDL 的效率有了显著晋升。此外,TiDB 内置了丰盛的图形监控界面,提供了残缺的闭环运维能力,包含故障剖析等,升高了运维老本。
即便如此,TiDB 在安能从测试到切换上线还是经验了 3 年左右的工夫,次要分为测试和数据校验两个阶段。在测试阶段,安能从 TiDB 3.0 版本开始测试,继续到 5.4 版本,在这个过程中充沛测试了 TiDB 每一个重要版本的外围个性和重要性能,也测试了 TiDB 推出的诸多工具,见证了 TiDB 产品成长和打磨过程。
具体测试方法是将生产数据通过音讯队列 1:1 引流到 TiDB 来模仿实在结算业务数据写入效率,同时针对不同业务场景及多业务场景组合下进行数据新增、删除、批改、查问性能及性能压测。在测试阶段,发现两个次要的问题:第一,在 TiDB 4.0 版本,数据量 800GB 时,同表应用分区表和一般表,分区表的性能比一般表大略升高了 20%-30%。第二,在某些业务场景下,例如 “查问工夫范畴内,扫描下一站为网点”对 TiDB 进行压测,发现较重大的数据热点问题,初期的 TPS 较低。前期,DBA 通过调整主键解决了一些数据热点,也通过调整集群的配置,TPS 均值达到了 10,000+。
在数据校验阶段应用 DM 将结算 MySQL 8 个库的数据实时同步到 TiDB 中,依照生产环境 1:1 搭建了一套残缺的结算零碎仿真环境,进行了为期将近一年的数据校验工作,最终于 2023 年春节,将原有运行六年的 MySQL 集群无缝平滑切换到 TiDB 上。尽管安能不是快递物流行业第一个应用 TiDB 的用户,然而所有结算业务 all in TiDB,在行业内安能是第一个。
TiDB 上线投产后,给安能带来的收益次要有几个方面:第一,结算零碎利用代码简直无改变,平滑迁徙至 TiDB,只是做了数据源的替换。第二,解决了应用 MySQL 数据库时所面临的所有挑战。第三,原来 MySQL 环境下,在线数据只能保留 6-8 个月的工夫,应用 TiDB 的结算零碎在线数据的生命周期翻倍,能够保留 1 年 8 个月,当然两年也没有问题。当初,单表的数据量大略是 35 亿,5 TB 大小。TiDB 数据库均匀响应时长比原来 MySQL 升高了一倍,这是在业务顶峰的时候,失常状况下是 25 毫秒。QPS 从原来 20,000 晋升到了 45,000。运维老本方面,综合来看整体大略升高 30% 左右。
同样,在切换到 TiDB 后,也不是没有任何问题。从业务场景角度,安能心愿 TiDB 在前期的版本中解决以下几个问题:第一,在多表交易的时候,TiDB 的 SQL 优化器会呈现执行打算稳定性的问题。第二,业务数据导出场景下,容易呈现 OOM 的问题,这个问题在 7.1 版本有了解决方案,后续咱们会进行深刻的验证。第三,分区表性能与一般表存在 10% 性能差距。降级到 6.5 版本之后又进行了测试,后果还是有性能的差别。最初,TiDB 子查问的性能比 MySQL 要差一些。
安能在零碎建设过程中,经验了从垂直大集中模式到拆分数据库,再到微服务架构下数据分布式集中存储这样一个过程。目前,安能正将业务全链路环节经营操作系统切换到 TiDB 上,从而升高零碎数据交互的复杂度。将来打算将结算业务和经营操作合并到同一个 TiDB 集群,安能在上海有两个数据中心,双机房之间通过万兆专线网络直连,可实现双数据中心部署,实现业务流量双活。可能大家会问,如果把结算业务与外围经营操作业务都放到一个集群会不会有问题?答案是没有问题,为什么?第一,安能结算业务与外围经营操作业务的工夫点是离开的。第二,安能对外围经营操作业务的底层数据模型通过了全面的设计,不会呈现多表关联简单 SQL 查问等,所以能够这样做。
一栈式物流数据平台成为数字化降级的突破点
最初谈谈 TiDB 是如何助力安能数字化降级的。下图是安能快运业务的全链路流程。绝对于快递而言,快运业务的流程节点更多,业务逻辑更简单。在每一个业务环节,岂但会波及到业务操作,还会波及到一些治理的动作,因而每个业务节点都会产生大量数据,而这些数据又环环相扣,这对数据的实时性和准确性要求十分高。安能明天曾经做到了全链路业务流程的数据可视化,然而随着公司治理赋能动作的前移和下沉,接下来安能打算应用算法模型在现有的数据上进行人、车、场、货的各种预测。
安能自 2017 年开始走数据经营路线,到目前为止,自主研发 52 套 IT 零碎,开发了一系列部署于整个业务流程的专有数字化工具,通过全链路数字化经营和智能化决策来实现效率降级。也正是因为如此,在明天数字化降级的背景下面临十分大的挑战,次要体现在:第一,业务零碎多,性能扩散,导致数据扩散。第二,多个业务零碎的数据采集到上游去做统计分析的时候,因口径差别,不同零碎、雷同时点、"同一个数据"不统一。第三,原先在不同的业务场景下不足顶层的设计,导致在不同的业务场景应用了不同的技术栈,从而造成了简单的零碎架构。
除此以外,当业务增长后零碎无奈承载高峰期负载并发,如何解决?结构化及非结构化数据快速增长,数据查问和解决申请无奈响应,又该怎么办?明天,在物流快递行业内,安能整个 IT 团队的人员是起码的,在降本增效的背景下,IT 团队如何高效撑持业务的倒退?这些都是接下来须要面临的问题。
基于以后所面临的挑战,首先要解决的问题就是数据交互和对立的问题,因而构建新一代一栈式物流数据平台成为了安能数字化降级的突破点。如何应用最简略、最灵便、最高效的技术体系和起码的老本构建新一代数据平台,从而实现货物从下单到签收及结算的全闭环实时状态追踪。基于 TiDB 的利用实际,后续安能将借助 TiDB 分布式、高可用性、弹性伸缩、大规模数据处理和实时 HTAP 等能力来构建新一代一栈式物流数据平台,减速数字化降级。
具体的构想是应用 TiDB 作为一栈式物流数据平台的底座,把安能源端业务零碎所采集的所有数据,依照业务主题和数据域对立进行存储,升高不同零碎之间数据交互的复杂度,解决数据对立的问题。在一栈式物流数据平台的根底上,能够做相应的数据服务,对立对外提供数据服务平台和 API 接口,以及更高阶的数据利用产品。安能置信在 TiDB 的助力下,数字化降级将会更加便捷和高效。