网络异常,图片无法展示
|
配置加载方式
canal配置方式有两种:
- ManagerCanalInstanceGenerator: 基于manager管理的配置方式,目前alibaba内部配置使用这种方式。大家可以实现CanalConfigClient,连接各自的管理系统,即可完成接入。
- SpringCanalInstanceGenerator:基于本地spring xml的配置方式,目前开源版本已经自带该功能所有代码,建议使用。
Spring配置
spring配置的原理是将整个配置抽象为两部分:
- xxx-instance.xml: canal组件的配置定义,可以在多个instance配置中共享
- xxx-properties: 每个instance通道都有各自的一份定义,因为每个mysql的ip,账号,密码等等信息不会相同
通过spring的PropertyPlaceholderConfigurer通过机制将两部分融合,生成一个instance实例对象,每个instance对应的组件都是相互独立的,互不影响。
properties配置
properties配置文件分为两部分:
- canal.properties: 系统根配置文件,对应一个canal server
- instance.properties: instance级别的配置文件,每个instance一份
instance.properties配置介绍
a.在canal.properties定义了canal.destinations后,需要在canal.conf.dir对应的目
录下建立同名的文件
比如:canal.destinations = example1,example2
,这时需要创建example1和example2两个目录,每个目录里各自有一份instance.properties.
ps. canal自带了一份instance.properties demo,可直接复制conf/example目录进行配置修改。
cp -R example example1/ cp -R example example2/
b. 如果canal.properties未定义instance列表,但开启了canal.auto.scan时
- server第一次启动时,会自动扫描conf目录下,将文件名做为instance name
- 启动对应的instance server运行过程中,会根据canal.auto.scan.interval定义的频率,进行扫描
1.发现目录有新增,启动新的instance
2.发现目录有删除,关闭老的instance
3.发现对应目录的instance.properties有变化,重启instance.
xxx-instance.xml配置介绍
目前默认支持的xxx-instance.xml有四种:
- memory-instance.xml
- file-instance.xml
- default-instance.xml
- group-instance.xml.
spring/memory-instance.xml介绍:
- 所有的组件(parser , sink , store)都选择了内存版模式,记录位点的都选择了memory模式,重启后又会回到初始位点进行解析。
- 特点:速度最快,依赖最少(不需要zookeeper)
- 场景:一般应用在quickstart,或者是出现问题后,进行数据分析的场景,不应该将其应用于生产环境
spring/file-instance.xml介绍:
- 所有的组件(parser , sink , store)都选择了基于file持久化模式;
- 特点:不支持HA机制.支持单机持久化.
- 场景:生产环境,无HA需求,简单可用.
spring/default-instance.xml介绍:
- 所有的组件(parser , sink , store)都选择了持久化模式,目前持久化的方式主要是写入zookeeper,保证数据集群共享.
- 特点:支持HA
- 场景:生产环境,集群化部署
spring/group-instance.xml介绍:
- 主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。
- 场景:分库业务。比如产品数据拆分了4个库,每个库会有一个instance,如果不用group,业务上要消费数据时,需要启动4个客户端,分别链接4个instance实例。使用group后,可以在canal server上合并为一个逻辑instance,只需要启动1个客户端,链接这个逻辑instance即可.