flink从入门到放弃指南
一、流式数据处理简介
流式处理
实际应用中,不断产生的事件需要快速得到响应。作为应用程序想要处理无限、并发产生的事件流,且不想每次收到事件后就记录事件的状态。但是实际应用场景中,应用程序实际上是需要维护这样的信息的。即,当应用程序收到新事件时,需要从事件中读取数据或改变事件的状态。所以,有状态的流处理应用程序,通常会从已经记录的时间日志中提取输入事件(存储和分发时间流)。历史写入的事件日志是以附加的形式(对,就是类似kafka)写入。总之,有状态的流式应用十分广泛,如事件驱动应用程序;数据管道应用程序及数据分析应用程序。
事件驱动的应用程序通常会有日志来进行交互,通常交互节点本地保存本地状态,并不将相关状态写入到外部存储。事件日志通道通常将日志的发送者和接收者分离,并提供异步、非阻塞性的事件传输。同时事件日志提供了更好的性能,扩展性及容错性也大幅度提升。
数据管道通常提供较低的延迟,来提取和插入数据。比如不通存储系统之间同步数据的任务(ETL任务)。
流处理通常不是等待定期触发,而是连续地提取事件流,并通过纳入最新时间来更新其计算结果。具备实时的,精确的结果,同时支持调整计算资源。
Flink简介
Flink是第三代分布式流处理器,它提供大规模流处理,具有高吞吐量和低延迟等特点,且一下以下功能特点突出:
- 事件时间(event-time)和处理时间(process-time)语义。对于无需说事件流,事件时间扔能提供一直且准确的结果;而处理时间可用于极低延迟的应用程序。
- 精确一次(exactly-once)的状态一致性保证。
- 每秒处理百万个事件,毫秒级延迟。
- 分层API,具有不通的权衡表现力和易用性。
- 能够更新应用程序代码并将作业迁移到不通的Flink集群,而不丢失应用程序状态。
to be continued!!!
参考文献
文档来源 | 链接地址 |
---|---|
flink尚硅谷链接 | 链接地址 |
官方文档 | 链接地址 |