![](/img/trans.png)
[英]Use of flink/kubernetes to replace etl jobs (on ssis) : one flink cluster per jobtype or create and destroy flink cluster per job execution
[英]Is it a good practice to create lots of jobs in a flink cluster?
我打算用flink流創建一個規則引擎。
執行有一些要求:
問題是可以在運行時添加規則,因此我不能簡單地創建大量作業來處理所有傳入消息,因為我有可能超過允許執行規則的最大時間。
我保證可以在時間限制內執行單個規則。
所以我想知道按規則創建一份工作並在新規則到來時增加更多工作是一個好習慣嗎? (這可能是一百條規則)。
我有直覺認為這不是解決問題的方法,但解釋原因並不合理。
第二種方法是維護一個隊列(例如在zookeeper中),以便跟蹤哪個規則已針對哪個事件執行。 所以每項工作的工作只包括:
如果要動態調整程序邏輯,可以使用co-flatmap運算符。 co-flatmap運算符有兩個輸入,一個是正常事件輸入,另一個是規則輸入。 在內部,您將存儲規則並將其應用於來自其他輸入的傳入事件。
以下可能如下所示:
DataStream<Input> input = ...
DataStream<Rule> rules = ...
input
.connect(rules)
.keyBy(keySelector1, keySelector2)
.flatMap(new MyCoFlatMap());
public static class MyCoFlatMap implements CoFlatMapFunction<Input, Rule, Output> {
@Override
public void flatMap1(Input input, Collector<Output> collector) throws Exception {
// process input
}
@Override
public void flatMap2(Rule rule, Collector<Output> collector) throws Exception {
// store rules
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.