开发有感
# 问题
一个flink的配置文件复用的问题,困扰我了至少一周时间。直到今天早上,我才将完整的处理好。
# 背景介绍
- 一个flink的实时任务仓库中存放着同一类型的任务,这个任务现在已经存在三个。
- 三个任务的source 读取配置基本一致,都是从消息队列中读取消息,不同的是读取的策略不相同。一个需要从头到尾开始读取,其余两个只需要从最新的开始读取即可。
# 问题
- 如何在该仓库中,不用的任务使用不同的配置?
- 配置使用的properties,读取配置的工具是flink自带的parameterUtil。
# 思考
最原始的想法就是通过flink-job name的方式进行区分,不同的flinK job拥有不用的配置。这个最初的想法也即最后的实现方式,只不过在刚开始时,不知道如何呈现。
配置全部放在一个properties文件里面,这时就存在一个问题,properties的key不能够重复,那么不同的key的化,那就得flink-job-name-xxx这种方式来配置,解析的时候也按照这种方式来进行。这种方式看着太繁琐,而且杂乱,不同的配置放在一起,有一些value相同的,在一个文件中又能够合并,但是解析的时候有需要区分。已经完成了实现,但是看着不太优雅,放弃!!!
yaml的方式进行配置。这种配置能够实现不同的任务通过缩进的方式进行配置,但需要额外引入解析工具来对yaml进行解析,而且对原来的适配很不友好。遂放弃!!!
最后,将不同的配置文件分开,几个任务就有几个配置文件,不同的文件通过flink job name进行区分。不同的环境通过代码分支进行区分。这种方式能够复用现有的解析程序,而且也能够隔离不同任务的配置。采纳!!!
# 反思
现在看来,这个方式也不是很高级,也就是最初的想法的具体实现,那就为什么一直想不到这个方式呢?还等了至少一周的时间,早上的时候才灵光乍现。
# 感悟
有点时候的确存在这种情况,看到一个东西,或者想到一个东西,就是想不透,要一直记在心里面,需要一直想,一直尝试。最后才能成功。
上次更新: 2025/03/09, 15:45:50