随着业务的增多,数据体量的越来越大。SQLServer的单库单表,已不能满足大量数据的存储,多维度的数据查询及检索等需求。使用MySQL分库分表和ElasticSearch存储业务数据,可以很好的解决上述需求。而数据进行异构存储后,随之而来的就是数据同步的一系列问题:
多维度海量数据查询及检索需高效、准确。
业务双写SQLServer、MySQL、ES需保证数据最终一致性。
数据同步过程不可影响现有业务生产环境。
数据同步过程不可停机。
同步比对过程中发现业务异常,能及时、准确通知。
支持分布式作业部署。
一、PDataX架构
PDataX是拍拍贷用户团队为解决用户海量业务数据同步,而研发的分布式数据同步系统。
图一 PDataX分层架构图
二、关于PDataX
PDataX整体由以下几部分组成:
实时索引同步服务:基于canal解析MySQL的binlog数据,服务订阅消息,实时消费数据,封装存储至mapping表、ElasticSearch等数据源。
实时索引补偿服务:通过遍历事务记录表,对失败消息进行实时补偿操作,以保证数据的可靠性、稳定性。
数据同步比对服务:此服务用于保障source数据和target数据的最终一致性,分为存量同步和增量同步。
分布式协调监控:基于注册至zookeeper的分片作业,进行作业的协调与监控,达到实时监控作业健康状态。
作业配置管理:对目标作业配置、数据源配置、告警配置以及比对补偿结果进行维护管理。
2.1数据存量同步
PDataX系统数据存量同步,是通过扫描库表的方式,将source数据源同步至target数据数据源。数据源可以是SQLServer、MySQL、Oracle等,目标数据源可以是MySQL单库单表、MySQL分库分表、MySQL重构关系表、ES索引等。
支持fieldSameStrategy(同表同字段)、fieldDiffStrategy(不同表不同字段)、shardingFieldDiffStrategy(分表分表)、mappingStrategy(关系表数据重构)、aggregatingEsStrategy(ES索引)等执行策略。
目标数据源可以是MySQL单库单表、MySQL分库分表、MySQL重构关系表、ES索引等。
支持fieldSameStrategy(同表同字段)、fieldDiffStrategy(不同表不同字段)、shardingFieldDiffStrategy(分表分表)、mappingStrategy(关系表数据重构)、aggregatingEsStrategy(ES索引)等执行策略。
图二 数据存量同步图
2.2 增量数据比对及同步
PDataX系统增量数据比对及同步,主要用于保障数据双写时的最终一致性。
由于业务数据的暴增,需分库分表至MySQL数据库中,业务应用进行双写操作,PDataX扫描SQLServer表,进行源表和目标表的数据比对,用于校验数据的最终一致性。
PDataX支持scan表、消费binlog消息等方式。支持多数据源并行高效作业。支持定制化分库分表作业。
作业过程实时监控,定制化告警阀值。
图三 索引增量同步图
2.3 实时索引同步及补偿
PDataX系统实时索引同步及补偿服务,是为满足大数据多维度检索需求,而研发的专项服务。
PDataX通过消费source数据源binlog消息,按照单表索引、聚合索引、mapping等策略,分片消费数据,实时存储至target数据源,保证数据的及时性。
全部消费作业执行事件均记录事务。异常执行事件,通过实时补偿服务进行补偿操作,保证数据的完整性。
大量历史存量数据,则通过扫描source数据源,同步至target数据源中。
实时监控message消费状态,及时调整消费速率,保障实时消费的稳定性、可靠性。
图四 实时索引同步架构图
2.4 分布式协调及节点监控
PDataX系统支持作业定制化协调分配,不同的作业任务可以动态分配到不同物理服务节点。同时可以实时监控不同节点的健康状态。
实现原理如下:
第一台服务器上线触发主服务器选举。主服务器一旦下线,则重新触发选举,选举过程中阻塞,只有主服务器选举完成,才会执行其他任务。
某作业服务器上线时会自动将服务器信息注册到注册中心,下线时会自动更新服务器状态。
主节点选举,服务器上下线,分片总数变更均更新重新分片标记。
定时任务触发时,如需重新分片,则通过主服务器分片,分片过程中阻塞,分片结束后才可执行任务。如分片过程中主服务器下线,则先选举主服务器,再分片。
通过上一项说明可知,为了维持作业运行时的稳定性,运行过程中只会标记分片状态,不会重新分片。分片仅可能发生在下次任务触发前。
每次分片都会按服务器IP排序,保证分片结果不会产生较大波动。
实现失效转移功能,在某台服务器执行完毕后主动抓取未分配的分片,并且在某台服务器下线后主动寻找可用的服务器执行任务。
图五 分布式协调及节点监控图
三、总结
PDataX系统一定程度上减轻了DBA在大量数据同步迁移过程中痛点,保障了业务数据双写的最终一致性,减少数据不一致导致的业务损失,同时为海量数据多维度检索提供便捷查询。但是,PDataX系统还处于不断完善和发展中,后续我们会在容错性、便捷性、高性能和实时监控等各方面持续优化。
欢迎各位感兴趣的朋友与我们交流,如果有纰漏或者不足的地方,欢迎指正或者给予补充。
更多福利请关注官方订阅号“拍码场”
好内容不要独享!快告诉小伙伴们吧!
想加入我们?长按下方二维码!
喜欢请点击↓↓↓