canal配置方式有兩種:
- ManagerCanalInstanceGenerator: 基于manager管理的配置方式设凹,目前alibaba內(nèi)部配置使用這種方式舰讹。大家可以實(shí)現(xiàn)CanalConfigClient,連接各自的管理系統(tǒng)闪朱,即可完成接入月匣。
- SpringCanalInstanceGenerator:基于本地spring xml的配置方式,目前開(kāi)源版本已經(jīng)自帶該功能所有代碼奋姿,建議使用锄开。
Spring配置
spring配置的原理是將整個(gè)配置抽象為兩部分:
- xxx-instance.xml: canal組件的配置定義,可以在多個(gè)instance配置中共享
- xxx-properties: 每個(gè)instance通道都有各自的一份定義,因?yàn)槊總€(gè)mysql的ip,賬號(hào),密碼等等信息不會(huì)相同
通過(guò)spring的PropertyPlaceholderConfigurer通過(guò)機(jī)制將兩部分融合,生成一個(gè)instance實(shí)例對(duì)象称诗,每個(gè)instance對(duì)應(yīng)的組件都是相互獨(dú)立的萍悴,互不影響。
properties配置
properties配置文件分為兩部分:
- canal.properties: 系統(tǒng)根配置文件,對(duì)應(yīng)一個(gè)canal server
- instance.properties: instance級(jí)別的配置文件,每個(gè)instance一份
instance.properties配置介紹
a.在canal.properties定義了canal.destinations后,需要在canal.conf.dir對(duì)應(yīng)的目錄下建立同名的文件
比如:canal.destinations = example1,example2
癣诱,這時(shí)需要?jiǎng)?chuàng)建example1和example2兩個(gè)目錄计维,每個(gè)目錄里各自有一份instance.properties.
ps. canal自帶了一份instance.properties demo,可直接復(fù)制conf/example目錄進(jìn)行配置修改撕予。
cp -R example example1/
cp -R example example2/
b. 如果canal.properties未定義instance列表鲫惶,但開(kāi)啟了canal.auto.scan時(shí)
- server第一次啟動(dòng)時(shí),會(huì)自動(dòng)掃描conf目錄下实抡,將文件名做為instance name
- 啟動(dòng)對(duì)應(yīng)的instance server運(yùn)行過(guò)程中欠母,會(huì)根據(jù)canal.auto.scan.interval定義的頻率,進(jìn)行掃描
1.發(fā)現(xiàn)目錄有新增吆寨,啟動(dòng)新的instance
2.發(fā)現(xiàn)目錄有刪除赏淌,關(guān)閉老的instance
3.發(fā)現(xiàn)對(duì)應(yīng)目錄的instance.properties有變化,重啟instance.
xxx-instance.xml配置介紹
目前默認(rèn)支持的xxx-instance.xml有四種:
- memory-instance.xml
- file-instance.xml
- default-instance.xml
- group-instance.xml.
spring/memory-instance.xml介紹:
- 所有的組件(parser , sink , store)都選擇了內(nèi)存版模式啄清,記錄位點(diǎn)的都選擇了memory模式六水,重啟后又會(huì)回到初始位點(diǎn)進(jìn)行解析。
- 特點(diǎn):速度最快辣卒,依賴最少(不需要zookeeper)
- 場(chǎng)景:一般應(yīng)用在quickstart缩擂,或者是出現(xiàn)問(wèn)題后,進(jìn)行數(shù)據(jù)分析的場(chǎng)景添寺,不應(yīng)該將其應(yīng)用于生產(chǎn)環(huán)境
spring/file-instance.xml介紹:
- 所有的組件(parser , sink , store)都選擇了基于file持久化模式;
- 特點(diǎn):不支持HA機(jī)制.支持單機(jī)持久化.
- 場(chǎng)景:生產(chǎn)環(huán)境,無(wú)HA需求懈费,簡(jiǎn)單可用.
spring/default-instance.xml介紹:
- 所有的組件(parser , sink , store)都選擇了持久化模式,目前持久化的方式主要是寫(xiě)入zookeeper,保證數(shù)據(jù)集群共享.
- 特點(diǎn):支持HA
- 場(chǎng)景:生產(chǎn)環(huán)境,集群化部署
spring/group-instance.xml介紹:
- 主要針對(duì)需要進(jìn)行多庫(kù)合并時(shí)驻谆,可以將多個(gè)物理instance合并為一個(gè)邏輯instance脑又,提供客戶端訪問(wèn)。
- 場(chǎng)景:分庫(kù)業(yè)務(wù)泞边。比如產(chǎn)品數(shù)據(jù)拆分了4個(gè)庫(kù)该押,每個(gè)庫(kù)會(huì)有一個(gè)instance,如果不用group阵谚,業(yè)務(wù)上要消費(fèi)數(shù)據(jù)時(shí)蚕礼,需要啟動(dòng)4個(gè)客戶端,分別鏈接4個(gè)instance實(shí)例梢什。使用group后奠蹬,可以在canal server上合并為一個(gè)邏輯instance,只需要啟動(dòng)1個(gè)客戶端嗡午,鏈接這個(gè)邏輯instance即可.