1、1主备服务器数据一致性问题轨道交通综合监控系统是数据采集与监视控制系统在轨道交通领域中的应用咱1暂袁系统规模庞大袁涵盖了电力监控系统尧机电监控系统尧火灾监控系统尧广播系统尧自动售检票系统等多个职能系统的数据采集和控制等功能咱2-4暂遥 为了提高系统的可靠性尧安全性袁在设计和实施过程中都会采用冗余设计袁其中就包括应用服务器的冗余遥 主备应用服务器如何保持数据的一致性对于系统的稳定性至关重要袁 现有的应用服务器数据一致性由主应用服务器来保证袁即主应用服务器对数据进行采集处理袁控制命令由主应用服务器接收处理遥在某些特殊场景下袁客户端向应用服务器发送命令时是需要主备应用服务器都接收处理的袁 如电力监控
2、系统中的挂牌尧摘牌命令尧人工置数尧人工置位咱5暂等命令袁在命令发送过程中由于异常掉电尧系统崩溃尧网络故障等原因将会影响主备应用服务器数据的可靠性和一致性袁 可能会导致严重的事故遥以电力监控系统为例袁如图 1 所示挂牌/摘牌操作发送给主备应用服务器袁其中主应用服务器收到命令后写入数据库遥当施工人员在现场进行电力检修时袁 客户端需向服务器发送挂停电检修牌命令咱6-7暂袁命令正确下发后袁各种电力设备的控制就不再被允许执行了袁当施工人员完成施工任务后袁此时客户端需向服务器发送摘停电检修牌命令袁命令正确下发后袁电力设备的控制重新被允许执行遥由于网络故障等异常情况袁假设主应用服务器收到了挂牌命令袁备应用服
3、务器没有收到遥当发生主备服务器切换时袁原来的备服务器由于没有收到挂牌命令袁导致两边数据不一致袁备服务器升级为主服务器后袁此时客户端发送过来的摘牌命令就无法正确执行遥为了解决应用服务器同步问题袁本文提出了一种基于 WAL 及索引尧共享队列尧检查点机制来实现数据一致性尧可靠性的方法遥 预写日志渊WAL冤与传统回滚日志模式相比袁它对数据库的操作不会直接修改数据库文件袁而是预先记录到日志文件袁当事务进入检查点时袁日志文件中记录的操作会被同步到数据库文件咱8暂遥 因此袁事务提交可以在不写入原始数据库的情况下发生袁这就允许一边将数据库更改添加到日志文件袁一边从未更改的数据库进行读操作袁实现了读写的并发执行
4、遥主机收到命令后将其写入 WAL袁并更新其索引袁等待下一检查点到来时将命令同步到备机中袁备机收到命令写入共享队列袁同时向主机发送确认返校袁 主机收到返校后更新索引进行下一个命令的同步遥图 1电力监控系统挂牌/摘牌操作2系统设计如图 2 所示为主应用服务器中 WAL 文件的部署情况袁本设计方案将 WAL 文件分为两类袁 一类主要记录转发的命令渊cmd-WAL冤袁 一类主要记录将要写入数据库的数据 渊db-WAL冤袁记录内容均以结构体二进制形式存储遥图 2主应用服务器 WAL 文件部署图 2 中 hostA 为主机袁 在主机上要为每一台备机均准备一套 cmd-WAL 文件袁当某一台备机出现故障袁其
5、他备机正常时不至于过多的 cmd-WAL 文件积累袁而影响其他正常备机的同步遥同时主机还要为每台机器准备一个索引文件袁备机的索引文件用来同步命令使用袁 主机的索引文件用来同步数据到数据库使用遥 索引文件内容较少袁记录了当前同步信息袁当前同步最大记录信息袁当前写文件信息袁信息包括 64 位整型 unix 时间戳尧记录个数统计遥 其中 cmd-WAL 类文件命名格式为 64 位整型unix 时间戳 _ 备机名.wal袁db-WAL 类文件命名格式为 64 位整型 unix 时间戳 _db.wal袁 根据索引信息中的时间戳可以较方便基于 WAL 的应用服务器同步实现研究王晨刘学纵刘勇渊卡斯柯信号有限
6、公司袁上海 200071冤Research on Application Server Synchronization Based on WAL摘要院在主备应用服务器对控制命令的处理过程中袁如果出现异常掉电或系统崩溃等情况袁可能会导致应用服务器出现数据不一致的问题遥 针对这一问题袁介绍了一种基于 WAL渊Write-Ahead Logging冤机制的应用服务器同步实现方法袁描述了应用服务器通过 WAL 及索引尧共享队列尧检查点实现数据同步的过程袁并在各种试验场景中对同步过程进行了详细的论述遥 研究表明袁利用 WAL 机制实现应用服务器数据同步是行之有效的方法遥关键词院数据同步曰WAL曰WAL索
7、引曰共享队列曰检查点Abstract:During the processing of control commands on the active and standby application servers,data inconsistencymay occur if an exception occurs,such as a power failure or system crash.To solve this problem,this paper introduces amethod of application server synchronization based on WAL
8、(Write-Ahead Logging)mechanism,describes the process ofapplication server data synchronization through WAL and its index and shared queue,checkpoint,and discusses the syn鄄chronization process in detail in various experimental scenarios.The research shows that,WAL mechanism is an effectivemethod to r
9、ealize data synchronization in application servers.Keywords:data synchronization,WAL,WAL-index,shared queue,checkpoint基于 WAL 的应用服务器同步实现研究18叶工业控制计算机曳圆园圆3 年第 猿6 卷第 8 期地查找到对应同步或写入的日志文件遥如图 猿 所示为应用服务器同步过程示意图袁 主机收到挂牌命令后袁 分别写入各备机的命令类型 WAL 文件和数据类型WAL 文件袁并更新当前写文件信息索引袁当前写文件信息记录数加一遥如果当前同步的和当前写的是同一文件袁则当前同步最大记录信
10、息与之相同袁 反之当前同步最大记录信息记录数为最大阈值袁因为当前待同步记录数已达最大值遥为了不阻塞同步过程的进行袁保持持久性袁需要写入新的文件袁WAL 文件名上的时间戳与索引文件内当前写文件信息的时间戳相比较袁 就很容易明确此时读写并发的一致性遥当各自的检查点时间到来时袁开始向数据库写入数据袁向备机同步命令袁备机收到命令后写入共享队列防止处理时间较长阻塞接收袁同时向主机发送确认返校袁主机收到返校信息后更新当前同步信息袁 当前同步信息记录数加一遥更新完后判断是否达到阈值袁达到说明当前文件内容已同步完毕袁将文件删除袁下一检查点到来时开始同步新的文件袁否则继续对当前文件内容进行同步遥图 猿应用服务器
11、同步过程示意图3同步过程本节主要介绍在各种试验场景中袁WAL 机制下的应用服务器同步过程袁以及在这一过程中涉及到的一些技术要点遥3.1 正常情况如图 源 所示袁为挂牌命令的处理过程遥当记录数到达一定阈值或检查点时间到达时袁将命令同步到备应用服务器袁更新数据库袁根据同步的反馈结果更新索引遥 当写入记录数达到阈值时袁开始新的日志文件写入袁防止日志内容持续增长遥当发生主备切换时袁 原来主机的日志文件内容没有同步完则继续同步袁同时升为主机的备机开始记录日志与同步遥需要注意所有的同步都是按照 FIFO 的原则袁即先记录的内容先同步袁否则新的数据会被脏数据覆盖咱9暂遥3.2 数据库故障时的同步过程当数据库
12、发生故障时袁如图 缘 所示袁主应用服务器可正常将命令同步到备应用服务器袁因此命令类型的日志文件正常同步袁但数据无法写进数据库袁因此数据类型的日志文件内容会累积袁里面全是未写成功的数据记录遥 当数据库恢复后袁 服务器需按FIFO 原则将日志内容同步到数据库遥 数据库若一直故障袁随着时间的增长袁日志文件会越来越多袁根据需要可以设定一个有效时段袁定期清理这些文件袁记录异常情况袁对数据库进行检查遥图 缘数据库故障时同步过程数据库故障期间若发生了主备切换袁 主备机上的日志文件均需要同步袁注意同步原则遥3.3 备机故障时的同步过程当备应用服务器发生故障时袁如图 远 所示袁主应用服务器可正常将数据写入数据库
13、袁因此数据类型的日志文件正常同步袁但无法将命令同步到备应用服务器袁 因此命令类型的日志文件内容会累积袁里面全是未同步的命令记录遥 当备机恢复后袁主应用服务器需按 FIFO 原则将日志内容同步到备机遥图 远备机故障时同步过程需要注意的是由于主机同步数据到数据库是正常的袁 当备机重启正常后会从数据库加载最新的内容袁 此时备机也会收到主机同步过来的命令袁需比较两者的新旧决定是放弃还是修改遥3.4 备机和数据库均故障时的同步过程如图 苑 所示为备机和数据库均故障时的同步过程袁 与 3.2尧3.3 小节处理过程类似袁备应用服务器和数据库均故障时袁主应图 源正常情况同步过程图 苑备机和数据库均故障时同步过
14、程19渊上接第 17 页冤咱3暂Time-Sensitive Networking(TSN)Task GroupEB/OL.https:/1.ieee802.org/tsn/咱4暂JORGESANCHEZ-GARRIDO,BEATRIZAPARICIO,JOS魪GABRIEL RAM魱REZ,et al.Implementation of a Time-SensitiveNetworking(TSN)Ethernet Bus for Microlaunchers J.IEEETransactions on Aerospace and Electronic Systems,2021,57(5):
15、2743-2758咱5暂Time-Sensitive Networking-Based Solution for Aerospace Mi鄄cro Launchers EB/OL.https:/S 如何快速集成与集群复用钥 咱EB/OL暂渊圆园圆圆原园怨原圆远冤咱圆园圆圆原员员原圆缘暂.学术 Plus 微信公众号咱7暂AEROSPACE TSN USE CASES,TRAFFIC TYPES,AND RE鄄QUIRMENTS(REV.0.6)DS/OLhttps:/grouper.ieee.org/groups/802/1/files/public/docs2021/dp-Jabbar-et-
16、al-Aerospace-Use-Cases-0321-v06.pdf咱8暂Curtiss-WrightIntroducesMiniModularMissionComputerwith 6th gen Intel Atom Low-Power Processor and Supportfor Deterministic Ethernet Networking EB/OL.https:/www.cur鄄 EB/OL.https:/ over TSN to Support NATO Generic Vehicle Architec鄄ture(NGAV)for Land Systems R/OL.h
17、ttps:/soc- over TSN to Support NATO Generic Vehicle Architec鄄ture(NGVA)for Land SystemsEB/OL.https:/SoC-e pre鄄sentation at TSN/A Conference:DDS over TSN to SupportNATO Generic Vehicle Architecture(NGVA)for Land Sys鄄tems-SoC-e咱12暂RELY-MIL-TIME-SERVER in EU Military naval programEB/OL.https:/ 造成命令类型日志
18、文件内容和数据类型日志文件内容累积遥3.5 一主多备下某一备机故障时的同步过程在一主多备场景下袁如图 愿 所示袁备机 hostB 故障袁因此主应用服务器无法向备机 hostB 同步命令袁 向其同步的命令类型日志文件内容会累积袁 里面全是未同步的命令记录遥 当备机hostB 恢复后袁 服务器需按 FIFO 原则将日志内容同步到备机hostB遥备机 hostB 若一直故障袁随着时间的增长袁日志文件会越来越多袁根据需要可以设定一个有效时段袁定期清理这些文件袁记录异常情况袁对备机 hostB 进行检查遥图 愿一主多备下某一备机故障时同步过程4异常恢复流程不难看出袁当 WAL 日志文件及索引更新完毕后袁
19、在假定文件本身不会自然损坏的前提下袁命令不存在不同步的情况遥如果在写入数据或检查点时间到达时出现掉电等异常问题时袁会导致日志文件或索引文件的数据不完整袁针对这种情况本文提供了以下恢复机制院1冤如果索引文件更新时发生中断袁在下次读取索引文件时袁系统会重新加载一次所有的日志文件袁 取文件名上时间戳最新的文件为当前写文件袁时间戳记为 t1袁更新索引文件中当前写文件信息袁即时间戳和记录数与之相同即可遥取文件名上时间戳最老的文件为当前同步文件袁时间戳记为 t2袁如果 t1屹t2袁更新索引文件中当前同步最大记录信息袁即时间戳为 t1袁记录数为最大阈值遥 如果 t1=t2袁更新索引文件中当前同步最大记录信息
20、与当前写文件信息相同遥当前同步信息可以不用更新袁因为在命令同步过程中备机会对同步的信息进行过滤处理袁 即已接收过的同步命令会被忽略掉并向主机发送返校袁在数据同步过程中袁需判断数据库里的数据和同步数据的新旧来决定是放弃还是修改遥2冤如果日志文件在检查点过程中发生中断袁实际上并不影响数据的读写袁因为索引文件仍会指向日志文件中的数据袁整个流程照旧袁下一个检查点到来时将从出错的位置开始同步遥3冤如果写入日志文件时中断袁那么此时的索引文件并未更新袁因此数据会被直接丢弃咱10暂遥5结束语本文提出了一种基于 WAL 机制的应用服务器同步实现方法袁解决了由应用服务器主备切换可能导致数据不一致的问题遥通过对日志
21、文件的读写操作及检查点的设置袁 实现了同步过程的并发性袁使得读写互不阻塞袁并发执行遥 索引文件的使用使得同步过程更加准确高效地进行袁针对掉电尧网络等故障袁系统具有一定的可靠性遥同步接收端采用共享队列形式处理袁使得数据的接收与处理异步执行袁 提高了数据的处理效率遥 同步双方采用应答超时机制袁可实现数据的持久性操作袁该方法具有较好的同步效果遥参考文献咱1暂周庭梁袁孙军峰袁孙春荣.谈以行车指挥为核心的城轨交通综合监控系统咱J暂.现代城市轨道交通袁2009渊3冤院14-17咱2暂郭佳峰袁裴加富袁张兵建袁等.基于运营场景的地铁智能导向集控系统研究咱J暂.铁道通信信号袁2021袁57渊12冤院87-91咱
22、3暂张广宇袁张奕男.智慧城轨通用实时数据集成分析平台研究咱J暂.铁路技术创新袁2021渊S01冤院87-91咱4暂杜凡袁郝明雷袁郑军.行车指挥综合自动化系统的集成方案设计及实现咱J暂.铁路计算机应用袁2022袁31渊2冤院54-59咱5暂孙姗袁杨帆袁王玉琴袁等.主备系统电网信息同步在杭州市调与监控中心的实现咱J暂.电子世界袁2013渊20冤院90-92咱6暂邵卫.浅析煤矿井下高压供电系统检修安全技术咱J暂.科技风袁2017袁渊4冤院122咱7暂杨柳.电力设备高压试验的必要性和关键点分析咱J暂.智能城市袁2016袁2渊11冤院258咱8暂夏文菁袁徐明袁吴铤袁等.一种基于预写日志的 SQLite 快速数据恢复方法咱J暂.通信技术袁2019袁52渊8冤院1975-1981咱9暂万虎袁徐远超袁闫俊峰袁等.通过非易失存储和检查点优化缓解日志开销咱J暂.计算机研究与发展袁2015袁52渊6冤院1351-1361咱10暂宋冰袁孙莉袁史大伟袁等.一种基于 SQLite 数据库日志的手机数据恢复方法咱J暂.西安航空学院学报袁2021袁39渊1冤院85-91咱收稿日期院圆园圆猿原园员原园源暂基于 WAL 的应用服务器同步实现研究20