Disaster recovery data synchronization system for China - Laos railway
-
摘要:
为满足中老(中国—老挝)铁路磨万(磨丁—万象南)段(简称:中老铁路)客票系统建设需求,提升其可用性和稳定性,设计了中老铁路容灾数据同步系统。结合层次化服务设计思想,详细阐述了该系统的架构和功能,重点研究了数据容灾和应用容灾,以及数据压缩、消息治理、自动化切换等关键技术,解决了数据库与缓存间双写操作中代码高度依赖、高并发环境下数据同步效率低、故障恢复迟缓等难题,为中老铁路的数据缓存同步提供了稳定可靠的解决方案。
Abstract:In order to meet the demand for the construction of the passenger ticketing and reservation system of the Boten - Vientiane South section of the China - Laos railway (referred to as the China - Laos railway) and improve its availability and stability, this paper designed a disaster tolerance data synchronization system for the China-Laos railway. Combined with the idea of hierarchical service design, the paper described the architecture and functions of the system in detail, and focused on data disaster tolerance and application disaster tolerance, as well as key technologies such as data compression, message governance, and automatic switching. The system solves the problems such as high code dependency in the dual write operation between database and cache, low data synchronization efficiency and slow failure recovery in the highly concurrent environment, and provides a stable and reliable solution for the data cache synchronization of China - Laos railway.
-
Keywords:
- China - Laos railway /
- data synchronization /
- high availability /
- disaster recovery /
- loose coupling
-
中老(中国—老挝)铁路磨万(磨丁—万象南)段(简称:中老铁路)自2021年12月3日正式开通以来,旅客出行需求持续高涨,发送量屡创新高,截至2023年3月15日,老挝境内段已累计发送旅客超过207万人次。随着中老铁路客票系统的不断完善及跨境列车的成功开通,预计客流量较之前将呈指数级增长。为有效应对这一增长趋势所带来的高并发访问和大数据量处理挑战,提高客票数据灾备能力,确保中老铁路客票系统数据的稳定性和安全性,设计并实现中老铁路容灾数据同步系统尤为重要。
现阶段,众多学者针对分布式环境下海量数据同步技术进行了研究。孙秋东[1]提出软件系统的分层设计理念及其思想原则, 并基于分布式计算与Web数据库的应用,提出了分层结构建议;孙琦等人[2] 提出了一种利用心跳检测来进行微服务架构的健康检查方法; 李扬等人[3] 提出了基于异构数据源的客票系统数据同步平台设计,实现了数据的集中管理和高效运营维护(简称:运维)。
基于上述研究,本文基于中老铁路一期建设现状,借鉴中国铁路客票发售和预订系统建设的先进经验[4],综合考虑技术前沿性、开发便捷性、系统可靠性,以及与既有系统的融合能力,提出了基于PostgreSQL高可用数据库的中老铁路容灾数据同步系统,从系统架构和功能等多个维度进行了深入细致的分析。通过采用数据压缩、消息治理、自动切换等技术,全面保障了该系统的稳定性与可靠性,确保其在应对高并发的数据同步场景时,能高效、快速、可靠地响应、处理各类业务请求。
1 系统设计
1.1 系统架构
中老铁路容灾数据同步系统依托中老铁路客票系统,旨在应对该客票系统在高访问峰值下所面临的数据库性能瓶颈,确保其在遭遇意外中断时,业务能够迅速恢复运作,从而保障服务的连续性和稳定性。中老铁路容灾数据同步系统架构如图1所示。
1.1.1 业务微服务层
涵盖订单处理、票价计算、席位管理、余票查询、用户管理等多个核心微服务,这些微服务在注册中心统一调度与治理下协同工作,形成高效的业务处理链条。当业务事件被触发时,本系统能够实时进行数据更新与持久化操作。
1.1.2 数据层
由核心数据库和互联网数据库组成,采用一主一从高可用架构,并由数据库高可用组件统一管理。该架构能够在分布式系统环境中自动处理主数据库节点故障转移,确保数据库集群的高可用性和数据一致性。
1.1.3 数据采集层
包含日志解码器和日志发送器。日志解码器模拟数据库的从库,捕获PostgreSQL数据库预写日志(WAL,Write-Ahead Logging),通过增量解析技术,精准重放事务级别的数据操作语言(DML,Data Manipulation Language)至日志发送器[3]。日志发送器负责消息的过滤、分发,将DML操作发布至消息总线。此过程中,采用ACK(Acknowledge Character)机制保证消息传输的完整性,进而实现高效且可靠的数据传输。
1.1.4 数据处理层
数据处理是整个数据同步的核心环节,通过订阅消息中间件接收数据发送器发布到消息队列中的原始消息,经过字符串解压、解密、SQL词法分析、语法解析和抽象语法树处理,形成标准化SQL语句。随后,对操作类型、表、字段及值进行拆解,最终形成规范化的数据组织结构。
1.1.5 数据同步层
利用分布式消息中间件和流式数据传输技术,对初始化、增量及全量数据实施个性化处理。增量数据通过集群模式与分区顺序策略,保证同一队列的消息同一时刻只能一个线程消费,严格按照先进先出顺序对订单、支付、席位等数据进行有序消费,将数据以键值对形式写入到缓存集群中[4];全量数据采用广播模式,同步基础数据至服务群,实现分布式本地缓存同步;初始化数据采用数据压缩传输,解压后通过多线程并发流式写入缓存。
1.1.6 缓存集群层
缓存集群是基于键值对的非关系型数据库[5],提供了数据的自动分区、高可用性和水平扩展能力,适合应对中老铁路客票系统大规模、高并发的场景。其高性能、灵活性、高可用性和易用性,对提升数据同步系统的处理能力、稳定性起到了关键作用。
1.2 容灾设计
中老铁路容灾数据同步系统划分为应用容灾与数据容灾,是一个高可用、高容错的数据同步支撑系统。
1.2.1 应用容灾
应用容灾依赖于应用集群部署策略,确保应用服务能够在多个节点间实现平滑切换。同时,通过负载均衡与故障转移机制,提升本系统整体的稳定性和可靠性,有效避免单点故障,显著提升中老铁路运营的吞吐量和弹性伸缩能力。
1.2.2 数据容灾
采用主/备数据中心架构,通过近实时数据同步技术,确保双缓存集群间数据一致性和可用性,主数据中心故障时,备数据中心即刻接管,保障业务连续性。
2 功能设计
中老铁路容灾数据同步系统功能架构,如图2所示。
2.1 数据同步
(1) 数据处理
数据同步的预处理过程,通过SQL结构化解析,实现数据组织结构的规范化。
(2) 数据补偿
应对集群故障引发缓存数据遗失的解决手段,通过可视化页面从数据库提取数据,利用流式处理和智能并发入库等技术,补全缺失的缓存信息[6]。
(3) 实时同步
将业务变更产生的增量数据实时同步到缓存集群,适用于订单、支付、席位等对时效性要求较高的业务。
(4) 定时同步
按照预设频率将数据库中的数据通过定时任务同步到缓存集群,适用于对实时性要求较低的数据,如余票信息、通知信息等。
2.2 故障检测
(1) 故障检测
针对高速缓存集群和消息中间件进行心跳检测,通过数据同步服务定期向这些集群发送心跳请求,以判断其运行状态,及时发现链路内集群中的故障或异常情况。
(2) 自动切换
在故障检测中发现高速缓存集群或消息中间件无法正常服务时,数据同步服务上报注册中心,广播消息告知其他业务微服务主集群链路不可用,须切换至备集群链路以确保业务连续性和稳定性。
2.3 监控告警
采用多维度的监控与告警策略共同构成了一个多层次、全方位的监控告警体系,为中老铁路容灾系统的稳定性和可靠性提供了强有力的保障。
(1) 服务器性能监控
全面覆盖与数据同步作业密切相关的服务器,密切跟踪CPU使用率、内存占用、磁盘容量及网络带宽使用情况,确保基础资源的高效利用与及时预警。
(2) 数据库监控
针对支撑中老铁路客票系统的核心数据库及互联网数据库高可用集群,实时严密监控其运行状态、数据复制与同步进程的连贯性,以及数据库最大连接数使用情况,预防潜在的访问瓶颈。
(3) 消息中间件管理
对消息中间件集群实施动态监控,特别关注消息积压状况、消费进度的实时状态、消息处理的延迟时间及各节点的工作效能,以维持消息传递的高效性与可靠性。
(4) 应用服务监控
深入监控业务微服务的运行状况,包括同步服务的活跃状态及数据同步频率,确保服务之间的协同作业无碍,提升整体服务的响应速度与服务质量。
(5) 监控告警通知
通过精细配置的监控规则与预设的告警阈值,自动识别并响应超出正常范围的各项指标,利用短信、电子邮件及企业内部通讯工具(如钉钉、企业微信)等多样化渠道,即时推送告警信息,迅速建立预警响应机制,确保问题的快速发现与处理。
3 关键技术
3.1 数据压缩
本文基于Deflate算法,对数据源端的原始JSON数据进行预处理,通过移除其中的换行和空格字符,形成更为紧凑的结构化数据;对处理后的数据进行分块再压缩,生成一种既能够高效压缩又能够快速解压的数据格式。在数据初始化时,本文采用Deflate算法,将大批量数据传输的压缩率提升至63.73%,数据体积缩减至原36.27%,显著优化中老铁路客票系统的网络传输效率与存储空间利用率[7]。
3.2 消息治理
中老铁路容灾数据同步系统的关键是消息治理,为此,采用以下策略来优化消息治理。
(1) 智能路由策略
利用主题、标签及路由键等机制对消息实施精细分类与智能导向,确保每条信息都能准确抵达目标处理单元。
(2) 消息聚合优化
鉴于同一时段内可能有多条关于相同数据表的更新消息需要写入缓存,本系统通过识别并汇总同类操作消息,仅发起一次缓存更新请求,有效减少冗余操作,显著提升处理效率。
(3) 消息补救机制
面对缓存数据偶尔的不完整问题,设计一套可视化补救工具,允许手动触发特定消息,以快速填补数据缺口,保障数据的完整性。
(4) 全面消息监控体系
消息监控体系覆盖消息的发送与接收速率、消息队列的工作负载状态及潜在的消息积压情况,确保能及时发现并应对任何可能影响本系统稳定性的异常消息处理,保障本系统的高可用性和可靠性。
3.3 自动切换
通过定时任务向消息中间件与高速缓存集群发送探测请求,周期性地验证其运行状况[8],若检测流程发现任何一个链路节点发生故障,将即时判定该集群路径不可用,此异常信息会通过数据同步服务传达至注册中心,触发配置中心内相关缓存连接地址的更新操作。通过配置中心的自动刷新机制,前端请求通过HTTP连接后端业务服务时,自动从配置中心获取到最新的地址,从而实现集群故障的请求转移,让业务流量能够自动切换到备集群,保障业务的可持续性。
4 系统应用
中老铁路容灾数据同步系统自2023年3月运行以来,已成功同步超过
3000 万条客票数据,高峰期每分钟处理约5万条数据记录,并且在极端负载情况下表现出色,能够实现每分钟高达13万条数据的同步。作为维护中老铁路客票数据安全与业务连续性的核心设施,其应用成效斐然。4.1 数据安全性显著增强
本系统实现了近实时的数据备份,确保主链路集群组件在发生自然灾害、技术故障或其他不可预见事件时,业务数据能够立即从备份站点无缝接管,有效防止数据丢失,保障了中老铁路客票数据的完整性与安全性。
4.2 业务连续性得到保证
采用主/备数据中心架构,该系统能在主数据中心故障时迅速切换至备用中心,最小化服务中断时间,确保席位、余票、订单、用户等核心业务不间断运行,提升了铁路运营的稳定性和乘客体验。
4.3 运维效率提升
本系统集成了自动化故障检测与切换机制,减少了人工干预的需求,显著减轻了运维团队的工作负担。
4.4 资源优化与成本节约
通过智能化的数据分发与同步策略,有效利用了网络资源,避免了不必要的数据冗余传输,同时,高效的容灾体系减少了因数据丢失或服务中断导致的直接经济损失,长期来看,有助于降低总体运营成本。
5 结束语
本文详细论述了中老铁路容灾数据同步系统的架构、功能及关键技术,通过采用高效的消息治理策略、可靠的数据同步机制及故障自动切换等技术,显著增强了数据处理的速度与效率,提高了本系统可用性,确保了在面对突发情况时的容灾能力,极大地满足了互联网售票快速增长的业务需求。随着中老铁路业务版图的不断扩展及技术架构的持续优化升级,下一步将专注解决数据传输延迟问题,力求实现实时数据同步,使其在面对日益复杂多变的业务环境时,仍能提供高效且可靠的服务支持。同时,将加强对不同业务系统数据源的集中管理,制定统一的流程、规范,进一步扩展本系统功能,实现中老铁路客票系统数据同步的集中管理和高效运维,为中老铁路运营提供可靠的信息技术保障。
-
[1] 孙秋冬. 软件系统的分层设计[J]. 计算机工程与应用,2001,37(7):110-112. DOI: 10.3321/j.issn:1002-8331.2001.07.036. [2] 孙 琦. 一种基于微服务架构的健康检查方法和装置:中国,CN201810077134.1[P]. 2018-01-26. [3] 李 杨,李雁明,戴琳琳,等. 铁路客票系统数据同步平台设计与应用[J]. 铁路计算机应用,2023,32(4):70-74. DOI: 10.3969/j.issn.1005-8451.2023.04.13 [4] 王雪峰. 中老铁路互联网售票系统设计与应用[J]. 铁路计算机应用,2024,33(2):32-37. [5] 王思宇,梅巧玲,马 杰,等. 铁路车站余票查询服务系统设计与实现[J]. 铁路计算机应用,2021,30(5):53-57. DOI: 10.3969/j.issn.1005-8451.2021.05.012 [6] 曹 健,刘 琼,王 远. 基于数据流转发的实时数据交换系统设计[J]. 计算机应用,2016,36(3):596-600,615. DOI: 10.11772/j.issn.1001-9081.2016.03.596 [7] 王俊杰,戴鸿君,于治楼. 一种使用DEFLATE算法的物理信息系统数据无损压缩传输方法:中国,CN201710041161.9[P]. 2017-01-20. [8] 刘 鹏,靳文婷. 故障转移集群部署在石油销售企业档案管理系统中的应用[J]. 中国管理信息化,2012,15(16):74-75. DOI: 10.3969/j.issn.1673-0194.2012.16.043.