本人自己录的视频,讲解 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