Hi,

Flink currently does not offer async sinks out of the box, but there is no 
fundamental problem against having them and we will probably offer something is 
this direction in the future. In the meantime, you can build something like 
this by replacing the sink with an async io operator that acts as sink (i.e. 
does the writes to the db) followed by a discarding sink for compliance with 
the API.

You need to be a bit careful if your sink needs exactly-once semantics. In this 
case things should either be idempotent or the db must support rolling back 
changes between checkpoints, e.g. via transactions. Commits should be triggered 
for confirmed checkpoints („notifyCheckpointComplete“).

Your assumptions about the blocking behavior of the non-async sinks is correct.

Best,
Stefan

> Am 08.12.2017 um 08:11 schrieb Jinhua Luo <luajit...@gmail.com>:
> 
> Hi, all.
> 
> The invoke method of sink seems no way to make async io? e.g. returns Future?
> 
> For example, the redis connector uses jedis lib to execute redis
> command synchronously:
> 
> https://github.com/apache/bahir-flink/blob/master/flink-connector-redis/src/main/java/org/apache/flink/streaming/connectors/redis/RedisSink.java
> 
> Then it will block the task thread of flink waiting the network
> response from redis server per command?! Is it possible for other
> operators running in the same thread with sink? If so, then it would
> block them too?
> 
> I know flink has asyncio api, but it seems not for used by sink impl?
> 
> https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/stream/asyncio.html
> 
> Thanks.

Reply via email to