Потоковые соединения Flink с низкой задержкой - PullRequest
0 голосов
/ 23 января 2020

Я хотел бы использовать потоковую передачу Flink для обработки рыночных данных с низкой задержкой (<1 мс). </p>

У меня есть набор вычислений, каждый из которых подписывается на три потока: данные с медленным движением параметров, цена акций и валютный курс.

например

params (медленный тик: один или два раза в день):

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

Всякий раз, когда любой акций, курсов валют или параметров, изменяется, тогда я хочу немедленно рассчитать результат и вывод это как новый поток. Логически это можно выразить как объединение:

например, выберите цену = (params.strike - asset.spot) * fx.rate из params, asset, fx, где fx.symbol = asset.currency и asset.symbol = params.asset

Акции и курсы валют будут тикать быстро (много в секунду), но с разной скоростью / временем, а данные параметров будут тикать очень редко (один или два раза в день). Всякий раз, когда ЛЮБОЙ из этих значений изменяется, я хотел бы пересчитать и опубликовать sh цену.

До сих пор я пробовал "широковещательно" без использования windows, что работает, но означает, что мне нужно написать довольно большое количество пользовательских кодов соединения, и я не могу использовать более элегантное "соединение" "синтаксис, и определенно не SQL. Это также кажется неэффективным, поскольку данные реплицируются и транслируются.

Чтобы использовать объединения, я попытался windows, с пользовательским триггером, который пытается отправить данные, как только он прибывает, и пользовательским выселением. код, который сохраняет последнее значение. Кажется, это работает, но с большой задержкой (много секунд).

Есть еще кто-нибудь предложения?

спасибо

1 Ответ

0 голосов
/ 23 января 2020

Flink SQL не может (пока) выполнить широковещательное соединение, поэтому оптимизация, которую вы смогли реализовать вручную, недоступна с SQL API. Следите за прогрессом на FLIP-92 , цель которого - сделать это возможным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...