本人自己錄的視頻,講解 Flink 整和 Nacos,動態更新作業配置,無需重啟作業!
我們知道 Flink 作業的配置一般都是通過在作業啟動的時候通過參數傳遞的,或者通過讀取配置文件的參數,在作業啟動后初始化了之后如果再想更新作業的配置一般有兩種解決方法:
-
改變啟動參數或者改變配置文件,重啟作業,讓作業能夠讀取到修改后的配置
-
通過讀取配置流(需要自定義 Source 讀取配置),然后流和流連接起來
這兩種解決方法一般是使用的比較多,對於第一種方法,zhisheng 我本人其實是不太建議的,重啟作業會帶來很多影響,Flink 作業完整的重啟流程應該是:當作業停掉的時候需要去做一次 Savepoint(相當於把作業的狀態做一次完整的快照),啟動的時候又需要將作業從 Savepoint 啟動,整個流程如果狀態比較大的話,做一次 Savepoint 和從 Savepoint 初始化的時間會比較久,然而流處理的場景下通常數據量都是比較大的,那么在這段時間內,可能會造成不少的數據堆積(可能分鍾內就上千萬或者更多),當作業啟動后再去追這千萬量級的數據,對作業來說壓力自然會增大。
對於第二種方法也是一種用的很多的方式,自己也比較推薦,之前自己在社區直播的時候也有講過類似的方案,但是今天我准備講解另一種方法 —— 整合配置中心,沒看見有人這么用過,我也算是第一個吃螃蟹的人了!說到配置中心,目前國內有 Apollo 和 Nacos,這里先來講下和 Nacos 的整合,下面的實戰操作請看我錄制的視頻。
我本人安裝的 Nacos 依賴是阿里的,因為自己本地編譯了一份源碼,所以可能會有這些依賴在自己本地的 .m2 目錄中:
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-core</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-common</artifactId>
<version>1.1.4</version>
</dependency>
但是有些同學反饋說上面的依賴引入不上,一直下載不了,比如 nacos-core,這里建議去 https://mvnrepository.com/search?q=nacos-core 看一下第一個,然后引用試試。
最后
GitHub Flink 學習代碼地址:https://github.com/zhisheng17/flink-learning
原文出處:zhisheng的博客,歡迎關注我的公眾號:zhisheng