摘自《大型企业微服务架构实践与运营》 薛浩 编著
异地多活数据同步平台
1. 异地多活架构
接入层应用可通过同步调用或异步消息实现相互的调用。通过相关的服务注册和发现机制保障寻址、路由、熔断、切换等。
在数据库层面,通过准实时同步的方式实现数据中心间数据的双向同步。以My SQL数据库为例,其同步示意如图:
中心间采用解析My SQL二进制日志(binlog)实现增量准实时双向同步数据,通过数据稽核检验保障数据最终一致。在灾难发生情况下,业务不中断,可人工或自动进入数据中心切换。
考虑到数据同步的效率,中心间的数据同步需要采取一定的策略。对于共性业务,数据中心之间只对系统静态参数和核心动态业务数据进行增量备份,其他业务数据不做备份;对于个性业务,只对个性业务的静态及配置数据进行两中心同步。
实现异地多活的关键在于数据中心间的数据同步,而数据同步的关键是要保证中心间的数据一致性和数据同步的低延迟。数据同步平台很好地解决了实现异地多活产生的数据同步问题。
2. 数据同步平台架构设计
数据同步平台主要由管理平台、切换感知、传输引擎、binlog解析器、数据稽核模块组成。binlog解析器通过订阅My SQL的binlog实现准实时跨中心数据同步,从而达到中心间My SQL数据的一致性。数据同步平台高度自治,只与My SQL交互。对中心间需要同步数据的My SQL建立传输管道,每个中心下包含需要同步的My SQL主—从数据库地址。
管理平台是My SQL数据同步平台的管理门户,主要提供配置和监控功能。配置功能包括传输管道、传输引擎、数据稽核、切换感知配置以及binlog解析配置;监控功能包括切换感知、传输引擎、异常、binlog解析以及数据稽核过程。
切换感知主要解决中心内My SQL数据库主—从切换后,通知binlog解析器与传输引擎切换到新的My SQL主库上进行解析binlog与回复binlog。
传输引擎通过内嵌解析器方式对接解析器,获取数据库增量日志数据,将增量数据传输到异地机房并加载到相应的My SQL主库中。
binlog解析器采用开源dbsync进行定制开发,以达到数据同步的要求。
数据稽核是在发生异常情况下,中心间数据同步过程中出现数据不一致问题。数据稽核是保障中心间数据同步的最终一致性的主要手段,分为冲突校验、定时全量稽核,根据稽核的结果进行手动、自动修复数据。
管理平台对切换感知、binlog解析器、传输引擎、数据稽核进行管理配置、监控。数据同步平台通过切换感知及时发现中心内My SQL的主—从切换,并通知传输引擎与binlog解析器切换到新的Master上进行数据同步。
2.1 数据同步原理分析
数据同步的前提是配置好需要实现同步的源数据库/表和目标数据库/表,在管理节点(Manager)配置