Ververica推出可建置与调度分散式有状态应用程式的Stateful Functions框架

人工智能2021-02-19 14:02:11
最佳答案

开源串流处理框架Apache Flink开发商Ververica推出了一个新的有状态分散式应用程式框架Stateful Functions,降低建置以及调度分散式有状态应用程式的複杂度,Stateful Functions能结合Apache Flink以及函式即服务(Function-as-a-Service,FaaS)的优点,提供事件驱动基础架构的抽象。

Ververica提到,由于Kubernetes和FaaS的发展,无状态运算应用程式的调度已经发展至一定的程度,但仍无法满足有状态的分散式应用程式需求,市面上主要的解决方案多数关注计算而非状态,函式之间的互动障碍,影响了开发工作的简便性,也阻碍分散式资料的一致性。

而Stateful Functions就是为了解决这些限制出现,用户可以定义鬆耦合且独立的函式,这些函式可以透过共享小型资源池,来维持一致性地互动。

Stateful Functions由两部分组成,分别是Runtime以及API,其使用Apache Flink内建的Runtime,进行分散式协调、沟通和状态管理,应用程式的状态会储存在串流处理引擎中,与计算资源位在同一处,可以提供快速且一致的状态存取,并且获得Apache Flink分散式快照模型的支援,提供强健的状态永久性和容错性。

Stateful Functions API则封装了商业逻辑小片段功能,这些函式以虚拟实例的形式存在,在应用程式中通常是指每个使用者或是存货物件等实体,其分散在每个储存分片中,因此应用程式可以简单地横向扩展。每个函式在本地端都具有永久使用者定义的状态,并且能够任意的向其他函示发送讯息。

Ververica特别解释,Stateful Functions框架并不是用来取代FaaS或是其他无伺服器服务的,而是要提供一种同时具有无伺服器服务的特性,但又适用于解决状态中心问题的解决方案。像是由事件驱动的应用程式,因为需要操作状态机(State Machine)并且纪录背景资讯,因此很适合使用状态中心範式开发。

Stateful Functions透过使用Apache Flink的串流处理,扩展其状态管理以及容错模型,来达到简化状态逻辑,并扩展不同状态和事件之间互动的规模,而由于这个模型的状态与运算位在同一处,因此应用程式要取得状态的时候,不需要存取外部储存系统,或是使用专用状态管理模式来维持状态一致性。Stateful Functions的储存分为两层,一个是短暂状态/计算层Apache Flink,另一个则为简单地永久性Blob储存层,而永久储存可让每个函式实例,独立地维护并追蹤容错状态。

虽然Stateful Functions API独立于Apache Flink,但是其Runtime是基于Apache Flink的DataStream API建置。Ververica表示,Stateful Functions应用程式通常是模组化,其中包含了多个函式集,只要使用单一Apache Flink应用程式就能进行多工处理,让各函式维持一致状态且可靠地互动,这样的好处是让多个小工作共用资源池,不需要事先準备应付高峰存取的资源,绝大多数的时间虚拟实例都是闲置状态,不消耗任何资源。

免责声明:本文由用户上传,如有侵权请联系删除!