漫谈数据同步
取消大小周了!!!当时听到这个消息的时候不相信。当确定消息真伪之后,心想着终于有更多的时间去干自己喜欢的事情了。总结是对自己过去工作最大的肯定。
# 前言
数据已成为企业极其重要的资产,数据同步也成为企业数据开发和使用一个绕不过去的技术需求。
- 什么时候我们需要进行数据同步,甚至是实时同步呢?
- 目前又有什么实时同步方案?
# 什么是数据同步
帮助用户实现两个或多个数据源之间的数据搬运工具。不生产消息,只是消息的搬运工。
# 典型应用场景
知道了数据同步解决了什么问题,哪些业务场景会使用到数据同步了。
数据库异地灾备
以传统金融机构数据中心为例,单数据中心由于地理约束等不能抵抗不可预知与控制的风险,已不能满足金融监管要求和企业业务敏捷的诉求,灾备甚至双活成为一个典型的刚性需求。实时数据同步是实现异地灾备的核心能力。
不停机迁移数据库
系统升级迁移是运维同事的日常工作之一。传统的方式,需要对存量的数据库做一个迁移,耗时非常久。如果基于这种实时同步这种模式,且有相应的产品去做支撑,就能保证我们的数据在迁移和做应用切换的时候,可以进行平滑的调整,把窗口尽量压缩,从小时级缩短到分钟级。
数据实时入仓/湖
在做数据仓库建设时,我们需要将大量业务系统数据持续集成到数据仓库/数据湖。我们要把数据从原有的各种各样的数据库里面,把它能够放到数据仓库里面去。
数据仓库更多是用来出报表,而不是去支持在线业务,这也是为什么近几年企业会越来越希望通过数据中台或者这种类似的实时数据能力,去加速整个数据在企业内的应用和流转。
读写分离
举个银行账单系统的例子。我们平常去刷信用卡,我们刷一笔,银行同时会记录一笔,同时我们可能还会不定期的去查询交易记录,这样的话从技术角度上来说,读和写我们需要能够分离,去保证整个系统的效率最大化。
业务异步解耦
一个典型的问题就是如果所有的系统都是一个个孤岛,但业务是需要联通的,这个时候需要打通不同的系统之间的数据。但是我们发现,系统是由不同的技术栈开发的,处理系统间的扩展,这样成本非常高。大家现在多会怎么做呢?如果使用实时数据同步,再加上一定的数据开发的能力,就可以很好的来管理和解决这些问题。
对于上面的经典业务场景,我们归纳于以下两类:
数据异构
- 同源:原端与目标端数据结构一样,例如:mysql->mysql
- 单表
- 多表(需要数据聚合)
- 异源:原端与目标端数据结构不一样,例如:mysql->es
- 单表
- 多表(需要数据聚合)
- 同源:原端与目标端数据结构一样,例如:mysql->mysql
消息订阅
- 当数据变更时需要通知其他依赖系统。
- 任务系统监听数据库变更,然后将变更的数据写入MQ/kafka进行任务下发,比如商品数据变更后需要通知商品详情页、列表页、搜索页等相关系统。
# 小结
方面主要介绍了,我们知道了数据同步是什么?哪些经典的业务场景使用到了数据同步?下一篇文章将介绍数据同步技术方案的选型。