Data Source 和 Sink 的容错保证

当程序出现错误的时候,Flink 的容错机制能恢复并继续运行程序。这种错误包括机器硬件故障、网络故障、瞬态程序故障等等。

只有当 source 参与了快照机制的时候,Flink 才能保证对自定义状态的精确一次更新。下表列举了 Flink 与其自带连接器的状态更新的保证。

请阅读各个连接器的文档来了解容错保证的细节。

SourceGuaranteesNotes
Apache Kafka精确一次根据你的版本用恰当的 Kafka 连接器
AWS Kinesis Streams精确一次
RabbitMQ至多一次 (v 0.10) / 精确一次 (v 1.0)
Twitter Streaming API至多一次
Google PubSub至少一次
Collections精确一次
Files精确一次
Sockets至多一次

为了保证端到端精确一次的数据交付(在精确一次的状态语义上更进一步),sink需要参与 checkpointing 机制。下表列举了 Flink 与其自带 sink 的交付保证(假设精确一次状态更新)。

SinkGuaranteesNotes
HDFS BucketingSink精确一次实现方法取决于 Hadoop 的版本
Elasticsearch至少一次
Kafka producer至少一次 / 精确一次当使用事务生产者时,保证精确一次 (v 0.11+)
Cassandra sink至少一次 / 精确一次只有当更新是幂等时,保证精确一次
AWS Kinesis Streams至少一次
File sinks精确一次
Socket sinks至少一次
Standard output至少一次
Redis sink至少一次