分布式协调/通知服务是分布式系统中不可缺少的一个环节,是将不同的分布式组件有机组合起来的关键所在。对于一个在多台机器上部署运行的应用而言,通常需要一个协调者来控制整个整个系统的运行流程,例如分布式事务的处理、机器间的互相协调等。同时,引入这样一个协调者,便于将分布式协调的职责从应用中分离出来,从而可以大大减少系统之间的耦合性,而且能够显著提高系统的可扩展性。从实现细节来讲,就是利用ZooKeeper中特有的Watcher注册与异步通知机制。
MySQL数据复制总线:Mysql_Replicator
MySQL数据复制总线是一个实时数据复制框架,用于在不同的MySQL数据库实例之间进行异步数据复制和数据变化通知。整个系统是一个由MySQL数据库集群、消息队列系统、任务管理监控平台以及ZooKeeper集群等组件共同构成的一个包含数据生产者、复制管道和数据消费者等部分的数据总线系统。
在该系统中,ZooKeeper主要负责进行一系列的分布式协调工作,在具体的实现上,根据功能将数据复制组件划分为三个核心子模块:Core、Server和Monitor,每个模块分别为一个单独的进程,通过ZooKeeper进行数据交换。每个模块均运行在服务端,运行时数据和配置信息均保存在ZooKeeper上,web控制台通过ZooKeeper上的数据获取到后台进程的数据,同时发布控制信息。
- Core:实现了数据数据复制的核心逻辑,其将数据复制封装成管道,并抽象出生产者和消费者两个概念,其中生产者通常是MySQL数据库的Binlog日志
- Server:负责启动和停止复制任务
- Monitor:负责监控任务的运行状态,如果在数据复制期间发生异常或出现故障会进行警告<