flink介绍
flink介绍:为世界上一些最苛刻的流处理应用程序提供支持
是一个框架,也是一个计算引擎。对无界和有界数据流进行有状态计算。设计为在所有常见集群中,以内存速度和任何规模计算。
任何类型的数据都是事件流,信用卡交易,传感器测量,机器日志或网站或移动应用上的用户交互。这些数据都是流。
1.无界流有一个开始,但没有结束。必须持续处理数据流,必须产生事件后立即处理。无法等待所有数据都到达,因为输入是无界的。处理无界数据通常要以特定顺序处理事件(如事件发生的顺序)产生的事件,以便推断结果的完整性
2.有界流有定义的开始和结束,可以在执行任何计算之前摄取所有数据来处理有界流,处理有界流不需有序,因为可以对有界数据进行排序。也就是批处理。
flink擅长有界和无界数据流,精确控制时间,状态使flink运行时能在无界流上运行任何类型的应用程序。有界流由算法和数据结构内部处理。这些算法和数据结构专门针对固定大小的数据集而设计。
flink适用于列出的每个资源管理器。这通过特定于资源管理器的部署模式实现。这些模式允许flink使用惯用方式与每个资源管理器交互。
部署应用,flink会根据应用配置的并行性自动识别所需资源,并从资源管理器请求他们。若发生故障,flink会请求新资源替换故障容器。提交或控制应用程序的所有通信都通过rest调用。flink轻松维护较大的应用程序状态,其异步和增量检查点算法确保对处理延迟的影响最小。同时保证一次性和一致性。
任务状态始终保留在内存中,若状态大小超过可用内存,则保存在访问高效的磁盘上的数据结构中。通过内存实现低延迟,通过定期,异步检查本地状态到持久存储来保证故障时的一次性和一致性。
flink的功能:支持流处理,批处理,复杂状态管理,事件事件处理语义,状态一次一致性,支持事件时间,高度可定制窗口逻辑,通过processFunction实现高级业务逻辑提供的细粒度时间控制。flink还提供了一个用于复杂事件处理CEP的库,用于检测数据流中的模式。
flink支持的应用程序:
1.事件驱动的程序,这种程序是有状态的程序,从一个或多个时间流中提取事件。并通过触发计算,状态更新或外部操作对传入事件做出反应。
2.事件驱动的应用程序是传统应用程序设计的演变,计算和存储分开。传统应用程序这个体系中,应用程序从远程事务数据库中读取数据并持久化。
事件驱动的应用程序基于有状态流处理应用程序。有状态流处理应用程序这种设计中,数据和计算是共同定位的,产生了本地(内存和磁盘)数据访问,这种设计通过定期将检查点写入远程持久存储实现容错。
事件驱动应用的优点:不查询远程数据库,而是在本地访问数据,从而在吞吐量和延迟性方面有更好的性能。远程持久存储的定期检查点可以异步递增完成,因此对常规事件处理的影响很小,事件驱动的应用程序设计提供的不仅是本地数据访问。分层体系中,多个应用程序共享同一数据库很常见。因此,需要协调数据库的的任何更改。
事件驱动应用程序的限制由流处理器处理事件和状态的程度来定义。flink提供了一组丰富的状态原语,可以管理最多几TB的数据量,并保证一次性一致性