低延迟flink流连接

hgc7kmma  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(326)

我想使用flink流处理低延迟(<1ms)的市场数据。
我有一组计算,每一个都有三个数据流:缓慢移动的参数数据、股价和汇率。
例如
参数(缓慢滴答:一天一到两次):

symbol|asset|strike
12345 |AAPL |1020
12346 |AAPL | 500
12347 |AAPL |1200
12348 |DAX  |2020
12349 |DAX  |2500
12350 |DAX  |2200
12348 |BASF | 400
12349 |BASF | 300
12350 |BA   |1000

资源(每秒多次滴答声):

symbol|currency | spot
AAPL | USD | 2300
DAX  | EUR | 4002
BASF | EUR |  304
BA   | GBP |  234

fx(每秒多次滴答声):

symbol|rate
USD  | 1
GBP  | 1.2
EUR  | 1.15
NZD  | 1.8

无论何时股票、汇率或参数数据发生变化,我都希望立即计算结果并将其作为新的流输出。这在逻辑上可以表示为联接:
e、 g.从params,asset,fx中选择price=(params.strike-asset.spot)*fx.rate,其中fx.symbol=asset.currency,asset.symbol=params.asset
股票和外汇汇率将以不同的速度/时间快速波动(每秒多次),而参数数据的波动频率非常低(一天一次或两次)。每当这些值发生变化时,我都会重新计算并公布价格。
到目前为止,我已经尝试了不使用windows的“broadcast”,这确实有效,但这意味着我需要编写大量的自定义连接代码,而且我不能使用更优雅的“join”语法,而且绝对不能使用sql。由于数据正在被复制和广播,因此它似乎效率低下。
为了使用连接,我尝试了windows,自定义触发尝试在数据到达时发送数据,自定义逐出代码保留最新的值。这似乎是工作,但与高延迟(许多秒)。
其他人有什么建议吗?
谢谢

dfddblmv

dfddblmv1#

flinksql还不能进行广播连接,因此手工实现的优化在sqlapi中是不可用的。注意flip-92的进展,它的目的是使这成为可能。

相关问题