1、中国银联跨中心&异构数据同步技术与实践目 录pppp需求背景架构设计案例实践未来规划需求背景p 简单的数据同步? MySQL 主从复制 主主复制 异步复制 半同步复制 UPSQLUPSQLA机房B机房/B中心/A中心4需求背景p 分库之后双中心需要转所有的表?双中心的部署资源不匹配?中心内主从切换?UPSQL-1UPSQL-2UPSQL.UPSQL-nUPSQL-1UPSQL-2UPSQL.UPSQL-nUPSQL-1UPSQL-2UPSQL.UPSQL-1UPSQL-2UPSQL.ProxyProxy北京中心上海中心5需求背景p 还有 双中心的缓存同步 数据库与缓存之间同步AppAppRed
2、isRedisUPSQLUPSQLB中心A中心需求背景p 更复杂的情况? 联机 = 汇总库 形变 异构数据库(DB2, ElasticSearch) ETL工具 T+1UPSQL-1UPSQL-2汇总库UPSQL-3业务系统大数据联机分片实时交易查询7需求背景p 数据同步组件-Moray目标数据库源数据库数据获取数据加工和传输数据回放Moray是一个数据同步组件,为数据库之间提供点对点、准实时数据同步服务。Moray 架设于源数据库与目标数据库之间,通过解析源库日志或扫表获取数据,经过内部加工,然后传输至目标库进行回放,从而实现数据同步。n 对应用透明n 应用无需额外开发n 尽可能降低对主库性
3、能的影响架构设计p 前后端分离MorayODBC插件UPSQL / DB2UPRedisUPSQL日志解析UPRedis插件UPSQLDB2数据扫描/DB2ESElasticSearchBigData/UPRedis/插件UPRedis日志解析远程UEyes插件远程数据接收数据源Mortise插件Remote前端模块后端插件前后端模块插件化设计,设计内部通用协议,以支持不同数据源和目标数据库的组合。架构设计p 设计要点 尽可能不拆分事务,保 断点续传保证数据零丢失;报文校验防数据篡改。数据一致性证事务原子性和数据一致性。高安全 尽可能不直接读源表,不与应用竞争数据库资源;数据压缩传输,节约带宽
4、;多线程并行回放,并优化并行算法。高性能高可用 采用端到端同步,去中心化,各业务之间互不影响;独立运行,降低与源库的耦合度;可根据数据库架构灵活部署。架构设计p 设计要点 管理监控平台实现节点管 针对多种异常场景设计了容错策略,如:自动过滤重复数据;数据异常自动转换补偿等。理和运行状态监控。如:同步进度、时延。高可管理容错机制 总体分为前端模块和后端插件,模块和插件均易于扩展,未来可支持更多数据源和目标库。插件化异步化 组件之间接口异步化,无阻塞,后一组件通过异步ACK给前一组件应答,提高整体性能。架构设计p 同构或异构数据库间数据同步目标库Ueyes(Impala)UPSQLDB2UPRed
5、isElasticSearchKafka数据源UPSQLDB2UPRedis UPSQL:解析源库binlog日志获取数据,通过ODBC插件写入UPSQL或DB2数据库,或通过ES插件写入ElasticSearch等;推荐用于UPSQL实时数据同步。 DB2: 扫描源库表格获取数据,通过ODBC插件写入UPSQL或DB2;推荐用于一次性数据迁移。 UPRedis: 解析源库AOF日志,通过redis插件写入redis,或通过ODBC插件写入UPSQL;推荐用于UPRedis缓存数据实时同步,或持久化至数据库。架构设计 - UPSQL实时同步p Binlog dump协议,获取/解析增量日志p
6、Moray内部协议格式保持数据库的事务特性p 参考MySQL组提交,将可以并发的事务归入一组p 同时支持MySQL XA协议(分布式事务)= 19fc90f5-b17a-11e8-a842-9cb6548afe90:1= XA START X78612d31,X,1 = test.t = insert into .= XA END X78612d31,X,1 = XA PREPARE X78612d31,X,1= 19fc90f5-b17a-11e8-a842-9cb6548afe90:2= XA COMMIT X78612d31,X,1;架构设计 - UPSQL实时同步p 数据安全 断点续传
7、严格保证数据零丢失 文件位点或GTID策略保证数据起点精准 报文校验和保证数据包传输完整 内部协议设计上保证数据回放时的ACID特性架构设计 - UPSQL实时同步p 容错机制容错场景容错策略GTID自动过滤备注重复执行 同一段日志多次回放UPSQL根据Insert记录已存在Moray自动转换为updateMoray自动转换为insertMoray自动忽略数据异常数据冲突Update记录不存在Delete记录不存在切库或回切,数据延迟导致数据被双写根据时间戳或版本号保留最新的Moray记录11. 要求表上有时间戳字段(精度越高越好)或版本号字段架构设计- UPSQL实时同步p 数据库变更p M
8、oray目前不支持DDL语句p 变更需根据如下策略模式灾备双活同步线路单向双向新增表新增字段增加字段长度新增表新增字段增加字段长度DDL类型是否停数据库否否否是否停Moray是1. 停止Moray同步2.3. 启动Moray同步1. 备中心变更2. 主中心变更操作步骤双中心同时变更架构设计 数据形变p 使用lua脚本配置数据形变功能架构设计 数据形变p 更复杂的一个例子架构设计-UPRedis实时同步p 高性能 报文压缩,减少网络带宽 PIPELINE发送,提高收发效率 设计性能10万QPS,流量400Mbps,压缩后40MbpsUPREDIS异地同步INCR kINCRBY K N异地传输I
9、NCR kSET foobar过滤PIPELINE压缩UPREDIS主(上海)UPREDIS主(北京)INCRBY kNLPUSH l vINCR KHMSET m fv架构设计-UPRedis实时同步p 高可用UPREDIS主UPREDIS主UPREDIS主sentinelsentinelsentinelUPREDIS备UPREDIS备UPREDIS备UPREDIS备UPREDISUPREDIS新主主Moray-upredisMoray-upredisMoray-upredisMoray-upredis 正常情况下,UPREDIS从备库同步数据 当备库不可用时:u 如果1主1从,UPREDIS从主库同步数据u 如果1主多从,UPREDIS从其它从库同步数据 主备切换时,异地同步组件订阅sentinel信息,切换到新主案例实践p 2018.2月 投入研发p 2018.5月 第一个版本releasep 2018.9月 第一个业务上线TSP联机TSP管理全渠道权限收单云迁移无卡前置管理无卡后置管理已上线行综云迁移实时风控灾备建设中云闪付统一账户商户管理二维码平台未来规划p 更多的模块与插件 Oracle Kafkap Moray集群化 简化部署配置与集中管理 进一步提升高可用Contact ushttps:/