canal版本:1.1.4
配置方式:基於canal-admin的ha模式
1、修改bootstrap.yml
canal:
manager:
jdbc:
url: jdbc:mysql:
username: root
password: 123456
3、啟動介面卡即可
public class bootstrapconfiguration
}@predestroy
public synchronized void destroy()
}}
/**
*/@override
public void loadremoteconfig()
}} catch (exception e)
}
此方法將觸發檔案更改事件
/**
** @param content 檔案內容
*/private void overridelocalcanalconfig(string content) catch (exception e)
}
檔案更改事件如下:
@override
public void onfilechange(file file) catch (interruptedexception e)
canaladapterservice.init();
} catch (exception e)
}
修改 com.alibaba.otter.canal.adapter.launcher.config.bootstrapconfiguration 類,改為如下:
public class bootstrapconfiguration }}
@predestroy
public synchronized void destroy()
}}
com.alibaba.otter.canal.client.adapter.rdb.rdbadapter
/**
* 初始化方法
** @param configuration 外部介面卡配置資訊
*/@override
public void init(outeradapterconfig configuration, properties envproperties)
});throw new runtimeexception("no rdb adapter found for config key: " + configuration.getkey());
}string configname = entry.getkey();
string key;
if (envproperties != null && !"tcp".equalsignorecase(envproperties.getproperty("canal.conf.mode"))) else
k1 -> new concurrenthashmap<>());
} else
}// 以下省略若干不關注的**
}
com.alibaba.otter.canal.client.adapter.rdb.rdbadapter
/**
* 同步方法
** @param dmls 資料報
*/@override
public void sync(listdmls)
try catch (exception e)
}
com.alibaba.otter.canal.client.adapter.rdb.service.rdbsyncservice
sync(dmls, dml -> else else
if (configmap == null)
if (configmap.values().isempty())
if (config.getconcurrent()) );
} else );}}
return true;
}});
}com.alibaba.otter.canal.client.adapter.rdb.monitor.rdbconfigmonitor
@override
public void onfilechange(file file)
if (config == null)
config.validate();
if ((key == null && config.getouteradapterkey() == null)
|| (key != null && key.equals(config.getouteradapterkey())))
addconfigtocache(file, config);// 重點是此方法
} else
}} catch (exception e)
}
com.alibaba.otter.canal.client.adapter.rdb.monitor.rdbconfigmonitor
return;
}// 坑就在這裡,此處生成鍵的規則直接預設為tcp模式了,如果使用的是mq模式,就會導致生成乙個新鍵(rdbsyncservice中匹配不上)存入配置資訊,而原來的鍵的值已經在deleteconfigfromcache方法中刪除了
k1 -> new hashmap<>());
} else }
修改com.alibaba.otter.canal.client.adapter.rdb.monitor.rdbconfigmonitor中的addconfigtocache方法如下:
return;
}string key;
if (envproperties != null && !"tcp".equalsignorecase(envproperties.getproperty("canal.conf.mode"))) else
.computeifabsent(key, k1 -> new hashmap<>());
} else
}
Spring Cloud Config 遠端配置
前面的課程我們學習了本地 config server 的搭建方式,本節課我們一起學習遠端 config server 的環境搭建,即將各個微服務的配置檔案放置在遠端 git 倉庫中,通過 config server 進行統一管理,本課程中我們使用基於 git 的第三方 託管遠端倉庫 github 作...
jupyter notebook 遠端訪問配置
首先是要安裝 anaconda 預設情況下,安裝好 anaconda 後開啟 jupyter notebook,訪問本地localhost 8888即可。但是如果要訪問另一台機器,比如遠端伺服器上的 notebook,即預設是不支援 172.104.105.119 8888 這樣的訪問,需要額外配置...
anaconda jupyter遠端訪問配置
1 開啟控制台 2 執行命令 jupyter notebook generate config 此時會生成乙個檔案c users administrator jupyter jupyter notebook config.py 3 執行ipython 輸入in 1 from notebook.aut...