Flink 整合 Nacos,让 Flink 作业配置动态更新不再是难事

本人自己录的视频,讲解 Flink 整和 Nacos,动态更新作业配置,无需重启作业!

我们知道 Flink 作业的配置一般都是通过在作业启动的时候通过参数传递的,或者通过读取配置文件的参数,在作业启动后初始化了之后如果再想更新作业的配置一般有两种解决方法:

  • 改变启动参数或者改变配置文件,重启作业,让作业能够读取到修改后的配置
  • 通过读取配置流(需要自定义 Source 读取配置),然后流和流连接起来

这两种解决方法一般是使用的比较多,对于第一种方法,zhisheng 我本人其实是不太建议的,重启作业会带来很多影响,Flink 作业完整的重启流程应该是:当作业停掉的时候需要去做一次 Savepoint(相当于把作业的状态做一次完整的快照),启动的时候又需要将作业从 Savepoint 启动,整个流程如果状态比较大的话,做一次 Savepoint 和从 Savepoint 初始化的时间会比较久,然而流处理的场景下通常数据量都是比较大的,那么在这段时间内,可能会造成不少的数据堆积(可能分钟内就上千万或者更多),当作业启动后再去追这千万量级的数据,对作业来说压力自然会增大。

对于第二种方法也是一种用的很多的方式,自己也比较推荐,之前自己在社区直播的时候也有讲过类似的方案,但是今天我准备讲解另一种方法 —— 整合配置中心,没看见有人这么用过,我也算是第一个吃螃蟹的人了!说到配置中心,目前国内有 Apollo 和 Nacos,这里先来讲下和 Nacos 的整合,下面的实战操作请看我录制的视频。

<iframe height=900 width=1150 src="//player.bilibili.com/player.html?aid=90742627&cid=154955963&page=1" allowfullscreen="true"> </iframe>

代码地址:https://github.com/zhisheng17/flink-learning/tree/master/flink-learning-configration-center/flink-learning-configration-center-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

1.2k 声望
245 粉丝
0 条评论
推荐阅读
刨根问底 Redis, 面试过程真好使
充满寒气的互联网如何在面试中脱颖而出,平时积累很重要,八股文更不能少!下面带来的这篇 Redis 问答希望能够在你的 offer 上增添一把🔥。

菜农曰15阅读 833

封面图
Java 编译器 javac 及 Lombok 实现原理解析
javac 是 Java 代码的编译器12,初学 Java 的时候就应该接触过。本文整理一些 javac 相关的高级用法。Lombok 库,大家平常一直在使用,但可能并不知道实现原理解析,其实 Lombok 实现上依赖的是 Java 编译器的注...

nullwy10阅读 5.9k

与RabbitMQ有关的一些知识
工作中用过一段时间的Kafka,不过主要还是RabbitMQ用的多一些。今天主要来讲讲与RabbitMQ相关的一些知识。一些基本概念,以及实际使用场景及一些注意事项。

lpe2348阅读 1.8k

封面图
Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 1.8k评论 2

封面图
Redis 发布订阅模式:原理拆解并实现一个消息队列
“65 哥,如果你交了个漂亮小姐姐做女朋友,你会通过什么方式将这个消息广而告之给你的微信好友?““那不得拍点女朋友的美照 + 亲密照弄一个九宫格图文消息在朋友圈发布大肆宣传,暴击单身狗。”像这种 65 哥通过朋...

码哥字节5阅读 1.1k

封面图
NB的Github项目,看到最后一个我惊呆了!
最近看到不少好玩的、实用的 Github 项目,就来给大家推荐一把。中国制霸生成器最近在朋友圈非常火的一个小网站,可以在线标记 居住、短居、游玩、出差、路过 标记后可生成图片进行社区分享,标记过的信息会记录...

艾小仙5阅读 1.5k评论 1

好好的系统,为什么要分库分表?
今天是《分库分表 ShardingSphere 原理与实战》系列的开篇文章,之前写过几篇关于分库分表的文章反响都还不错,到现在公众号:程序员小富后台不断的有人留言、咨询分库分表的问题,我也没想到大家对于分库分表的话...

程序员小富3阅读 1.5k

1.2k 声望
245 粉丝
宣传栏