该文章一开始列出各业务系统为使用mysql的业务数据,重复开发出多套数据同步工具,一方面难以管理,另外部分工具性能也偏差。需要一个统一为mysql数据提供同步服务的平台。该平台需支持离线同步,实时订阅,实时同步三大基本功能等。
那各功能如何实现?离线同步:可理解为将根据一个sql查询出的数据同步到其它目标存储上;实时订阅:通过实时解析mysql-binlog,将数据的变动封装成事件存于消息队列,供用户订阅消费;实时同步:提供一些常见的订阅客户端料现,实时消费消息,将数据的变动应用于目标存储上。
如何将三个功能集成在一个平台架构下?将离线同步,实时订阅,实时同步三个需求抽象为三种作业,分别为BatchJob,StreamJob,PieJob。
i. BatchJob参考Sqoop的模式,将需同步的数据先根据指定的规则进行分片,然后将作业根据分片拆分成多个任务,每个任务只同步本分片的数据,多个任务可同时运行,以加快同步效率;ii. 以BatchJob的模式为基础,StreamJob也可根据需要采集的mysql实例分成多个任务,每个任务负责采集解析一个mysql的binlog,并将解析后的事件封装成消息存于本地供订阅者消费;iii. PieJob是对订阅客户端的封装,每一个订阅客户端即可看作一个任务。
三种不同的作业最终都可以通过分片分成多个任务去运行,使用统一的模型。
文章最后介绍了集群此昂管内容,这也是我们近期有过接触的内容。
集群的1、高可用2、数据本地性3、负载均衡解决了很多问题。