2019年,国家相关部委提出,要“两年内取消高速公路省界收费站”实现不停车快捷收费,减少拥堵、便利群众。面对政策变更,云南省高速中心清分结算系统需要进行全方位升级改造以达到全国联网收费要求。
在清分结算项目升级改造的过程中,数据库建设主要面临两个方面的压力:
一是时间短,工作任务重。政策上,云南公路联网收费管理有限公司须尽快实现联网收费计费、车道数据和现有清分结算系统的设计做好整改配合工作,力争四个月内全省联网收费和清分结算系统整改完毕。
二是数据量大,选型难。自2019年5月起云南省全省逐步取消高速公路省界收费站,逐步推广ETC收费以来,云南省高速公路建成里程突破8000公里,全省发行ETC用户累计超过600万,客车ETC使用率超70%,货车ETC使用率超60%,选用技术领先的数据库支持云南省全省清分结算业务迫在眉睫。
项目建设三大难点
各类清分结算业务要基于数据统一平台提供的数据源正常高效进行,实现ETC和CPC交易数据的拟合算费,为云南高速路段业主提供更完整的交易数据,减少通行费损失提供支持:完成ETC通行交易清分结算、其他交易清分结算、退费补交清分结算和拓展应用交易清分结算以及省内争议处理、发票数据上传、交易对账核心功能等。
在这种背景下,项目的困难点主要集中在三个方面:
一、业务量访问巨大,数据库需要支持读写分离,否则会出现数据积压和低查询效率。
二、省中心清分结算系统与各流程环节交互较多,数据库连接数较多,存在程序直接连库写表造成进程间锁等待的问题。
三、各个收费站上传给清分系统省中心的数据无法集中,只能分散多个数据库存储,无法高效快速对数据进行访问、统计,影响正常的清分结算业务的及时完成。
本次清分结算系统数据库全部采用国产数据库AntDB,实现高速核心业务系统数据库全面自主可控。
清分结算系统负责处理并存储收费系统下发的出口交易流水、门架交易流水、部中心下发的记账信息等数据,并产生各种清分结算数据的系统,每日处理数据量超过5000万条,同时各类交易处理具有较强的时效性。
通过引入分布式关系型数据库 AntDB,清分结算系统不仅满足了各类数据实时及批量入库的需求,还对外提供在线查询功能,同时兼顾了各类定期报表功能需求,实现了数据库层面的统一,其整体功能架构如下图所示:
AntDB特性满足清分结算业务特点
AntDB可以高效支撑清分结算系统的超高并发业务,保证交易流水等数据处理“一条不漏,一条不错”。AntDB具备内存计算引擎,提供极致数据处理性能、基于SQL的数据访问服务以及可插拔的扩展服务;原生分布式设计,对应用完全透明,兼顾性能与可扩展性;有超强scale up能力,对CPU、内存、连接数不做限制;用户可以在线进行扩容操作,扩容过程不影响用户的线上业务,随着业务的快速增长数据库可以横向在线扩展。
AntDB数据库可以处理HTAP即交易加实时分析的融合场景,满足清分结算业务包括在线交易、数据分析、报表输出等场景需求。AntDB数据库具备实时强一致的分布式事务控制能力,确保数据零丢失和事务一致性,保证拆分数据和报表数据的准确性;在分布式场景下提供规范的数据访问控制,全局数据可实现一致性备份和恢复,并提供严格的数据访问控制和数据防倾斜设计,保证业务数据安全可靠;支持异地容灾,具备高可用,出现故障时可以自动剔除故障节点,保障业务持续可用,保证数据库系统达到99.999%的服务等级;具备动态高效的SQL执行引擎,提供异构索引,内置reduce数据处理引擎,数据节点间可以进行通信,提高数据处理效率,尤其是复杂查询场景的数据处理效率。
图:AntDB产品架构
AntDB数据库满足省中心清分结算系统相关的所有需存储数据的需求,包括ETC门架通行交易数据、站省传输上传的通行交易数据、部中心上传、下载的所有数据、基础参数数据、计费相关数据、拆分数据、记账数据、对账数据等。基于分布式版本的AntDB数据库,针对上述数据设计分片分区方式,将数据打散存放到数据库集群的各个数据节点中,减小单个数据节点的数据规模;在业务查询及数据录入时,可以大大提升其操作性能,避免互相之间的资源竞争。
AntDB中数据分片和分区对上层应用均是透明的,外部应用程序或接口无需关注底层数据分布,只需要关注上层业务逻辑。
AntDB对于OLTP场景下的数据处理做了大量优化工作,例如针对保证事务一致性的2PC协议做了优化,如果事务操作的数据仅涉及单个数据节点,那么计算节点仅进行一阶段提交,只需要确认对应的数据节点已经完成提交就任务事务提交已完成。只有当事务操作的数据涉及两个或以上数据节点时,计算节点才会启动两阶段提交,大大提升了处理性能。
清分结算系统中的AntDB数据库分布式架构中包含5个计算节点,计算节点为无状态节点,无主备状态,均可以对外提供服务,可根据业务发展情况进行弹性伸缩,大大提升了AntDB对于高并发业务的支撑能力和灵活度,目前数据库所有计算节点承载活跃连接数在1000左右,后续业务并发如果持续增加,可以对计算节点进行在线扩容,满足客户快速增长的业务需求。
同时,在AntDB中统一进行存储于处理的各类数据,可通过同步机制增量提供给副本集群(只读访问),实现数据的集中统一、资源隔离。通过一套数据库满足清分结算、车道收费、接口上传业务开发支撑能力。统一数据入口,各系统采集的数据由清分结算统一处理存放到数据库中,实现统一接入。
清分结算系统存在大量报表需求,需要提供对清分结算结果各种维度的报表数据查询以及下载,按照时间粒度可以分为日报表、月报表等。按照业务类型分类包括通行费收入划账报表、通行费收入划账明细报表、ETC通行交易省内/外通行费收费分账报表、现金交易省内/外通行费收费分账报表、移动支付交易省内/外通行费收费分账报表等。报表系统日处理源数据量达到2000万以上,所生成报表数据量达到70万以上,数据量巨大。
大数据量的报表生成和查询场景对AntDB在分析场景下的数据处理性能提出了很高的要求。大表查询场景下,查询SQL中的where条件若有分片键,这个查询会精确路由到具体的节点中,以提高查询效率。如果SQL的where条件中没有分片键,就会进行一次全节点扫描可能会造成资源的浪费,增加锁冲突的概率,并且拖慢性能等。
针对该场景,AntDB内部支持异构索引,异构索引采用空间换时间的方式来解决全量扫描的问题,内核自动维护分片键和索引键之间的映射关系建立异构索引,使用异构索引将避免全节点扫描,可以解决业务使用中存在多个查询维度时不带分片键造成的查询性能下降的问题。AntDB内置分布式并行执行引擎,在分析场景下当系统执行一个查询语句时,需要扫描表的内容,然后经过一系列计算,最后将结果返回给用户。AntDB内置的分布式并行执行引擎,在多个数据节点之间组网传输数据,利用多节点并发处理数据,可以使聚集、排序、关联等操作获得倍数级的性能提升,随着节点数的增加,性能提升线性增长。
AntDB启用多进程扫描,使用多个后台worker进程利用CPU多个核心、动态共享内存、工作进程间通信和消息传递来实现并行的数据扫描;
AntDB启用并行Hash Join,使用多个worker进程,每个worker节点执行相同的任务,在数据节点使用一个数据量小的表作为驱动表,用作Hash表,均分后的大表数据和Hash表做数据Join,最终在计算节点汇总数据;
AntDB启用并行排序,使用多个worker进程,每个worker节点在数据节点将获取的结果集数据进行排序,最终提交数据到计算节点并汇总排序数据;
AntDB启用并行创建索引,使用多个worker进程,在数据节点并行创建btree索引,提升索引创建效率;
AntDB启用并行Union,使用多个worker进程,每个worker节点执行相同的任务,扫描的数据在每个数据节点进行Union操作,最终将所有节点Union后的数据汇总至计算节点最终执行一次Union操作。
如上几大特性提升了AntDB在OLAP场景下的数据处理性能,AntDB数据库的上线提高了清分结算系统报表数据的生成效率和准确度。
AntDB应用实效
通过前文的描述可以看出清分结算系统的业务特点是典型的HTAP场景,AntDB是具备HTAP特性的分布式数据库,一套数据库可以同时支撑OLTP和OLAP业务场景,按照业务要求提供各类综合业务处理和报表服务。此外AntDB可以启用读写分离,将读流量分担到备节点,降低主节点读写压力,从而提高数据库的整体性能。
AntDB上线后清分结算系统ETC拆分业务效率提升90%,ETC清分记账效率提升60%,报表生成时间缩短接近90%。AntDB采用特有的copy命令进行数据加载,每个节点每秒可完成17.5万条数据的入库,5节点按照80%的效率预估,入库效率可达到每秒80万记录。数据导出方面,也使用特有的copy命令,性能与数据加载在同等规模水平,大大提高了客户清分结算系统的各项业务的处理效率。
高可用方面,清分结算系统中AntDB数据库的数据节点一主两备部署保证高可用,AntDB部署架构示意图如下:
为了最大化利用资源,生产数据库数据节点从一主两备调整为一主一备,原来生产库中的异步从库下架作为历史数据库使用,历史数据库同样采用一主一备架构,保证高可用,历史数据库承担历史数据备份和历史数据查询业务,由于历史数据查询频率较低,故服务器采用成本更低的HDD硬盘。调整后数据库集群如下图所示。
历史数据库上线后,主库运行压力大幅下降,数据处理性能得到提升。该方案在保证客户生产库高可用的同时降低了生产库运行压力,而且最大化利用了客户现有资源,降低了客户成本。此次生产库集群调整和历史库上线充分展示了AntDB分布式数据库的弹性伸缩能力和灵活性,可以根据客户需求及业务发展情况进行调整。
优势总结和推广价值
在该项目中的国产自主可控数据库AntDB的应用,提供了省中心数据统一服务能力以及“全流程+多协议+高性能+全业务数据”的处理能力,满足海量交易数据的集中采集、处理、查询要求,为取消省界收费后部-省两级架构支撑系统提供新动力。
一、 技术架构优势总结
(一)分布式特性克服传统数据库弊端:分布式数据库是当代数据库系统的主要特性之一,AntDB数据库的部署,使用5台SSD+10台HDD主机资源,集群节点采用一主两从部署架构保证集群高可靠性,面向应用,支持国产服务器的在线扩展、在线扩容,应用无须关心数据量的突发增长及物理服务器的具体位置,完美地解决了这一难题。
(二)技术架构的高可用特性提供可靠业务保障:网络应具备混合架构及服务高可用的能力。项目中AntDB具备集群自愈、两地三中心容灾架构,保证秒级自动鼓掌切换实现业务的连续性,并且能确保数据的完整性和强一致性。从传统IOE架构转为AntDB的分布式架构后,数据库依然可以获得99.999%的SLA服务保障。
二、 效果优势体现总结
AntDB使用分布式并行执行引擎,充分使用硬件资源,使得处理效率大幅提升。现今的AntDB正高效完成业务报表的输出,支撑处理云南高速每天1000万条门架流水、200万条车道流水。当前数据量存储累计超100TB,已稳定运行近两年,获得了业务团队和业界的认可。AntDB作为自主可控的国产数据库,成功运用于该“清分结算”类大数据库平台业务,具有广泛的社会意义:
高速交通行业示范作用:通过我省清分结算国产数据库的成功应用,为高速行业内应用国产数据库树立典范,增强行业内应用国产技术的信心。
信创产业示范效应:既响应国家号召、破解核心软件“卡脖子”风险,又落实云南省交通投资建设集团有限公司要求,助力公司实现自主可控创新引领,提升业务连续性,规避供应链安全风险。