Stateful Functions 2.0 基于Apache Flink的事件驱动数据库
应用流式处理的事件驱动应用替换CRUD数据库应用
2020-4-7, Apache Flink 团队,宣布了Stateful Functions (StateFun) 2.0正式发布--Stateful Functions第一次作为Apache Flink项目一部分的发布。这是个巨大的里程碑: Stateful Functions 2.0不仅仅是一个API升级,而是基于第一版基于Apache Flink之上构建的事件驱动数据库(event-driven database)。
Stateful Functions 2.0 使有状态性和弹性有效的结合在一起,实现了类似AWS Lambada和Kubernetes资源编排工具的快速缩放/缩放到零以及滚动升级的特性。
通过这些特性, Stateful Functions 2.0有效的解决了FaaS被诟病的两个缺点:状态一致性和函数间消息交换效率。
事件驱动数据库
Stateful Functions年初刚加入Apache Flink时,这个项目作为基于Flink的类库,用于构建通用的事件驱动应用。用可以实现接受和发送消息的函数,并且管理持久化的变量状态。Flink提供了一个高效的exactly-once状态和消息的基础运行时。Stateful Functions 1.0受到FaaS的启发,结合了流式处理和Actor编程。
在2.0版本中,Stateful Functions已经从Flink与JVM中解耦出来,只需通过服务调用他们。这可以使在Faas平台,K8S部署或其他(微)服务上运行函数变为可行。
Flink根据接收的事件通过HTTP或gRPC调用函数,并提供状态访问。系统保证每个实体在任何状态下仅会被消费一次,这样通过隔离保证了状态一致性。通过提供状态访问作为函数的一部分,函数本身可以被当做无状态的