「从零单排canal 05」 server模块源码解析
基于1.1.5-alpha版本,具体源码笔记可以参考我的github: https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_reading/canal 本文将对canal的server模块进行分析,跟之前一样,我们带着几个问题来看源码: CanalServer有几种使用方式? 控制台Admin、客户端client是如何与CanalServer交互的? CanalServerWithNetty和CanalServerWithEmbedded究竟有什么关系? Canal事件消费的特色协议,异步流式api(get/ack/rollback协议)的设计是如何实现的? server模块内的结构如下: 主要分为了三个包: admin包: 这个包的CanalAdmin接口定义了canalServer上暴露给canal-admin控制台使用的一些服务接口。 上一篇deployer模块解析中提到的CanalAdminController就是实现了CanalAdmin接口(把这个接口的实现放在deployer模块是挺奇怪的)。Admin包中使用了netty作为服务端(CanalAdminWithNetty类中实现),接受控制台Admin的请求,返回当前canalServer的一些运行状态。 server包: server模块的核心包