近期,Apache Flink开源项目背后的公司Ververica发布了一个新的框架——Stateful Functions,旨在将Flink扩展到分布式的有状态应用程序中。
Stateful Functions是一组工具,旨在让开发人员能够创建以现代无服务器方式运行的有状态应用程序。该软件为开发人员提供了一组有状态函数(以此得名),而该软件运行在Flink的分布式数据处理引擎之上。
Apache Flink已经成为一个领先的流处理框架,它为开发人员提供了丰富的功能,以构建分布式、事件驱动的应用程序。希望对事件做出响应的组织,例如一个人进行购买或一个传感器在登录尝试检测峰值时,好选择Flink或类似的框架来构建应用程序。
然而,这些Flink应用程序在大多数情况下以无状态的方式运行。虽然Flink确实提供了一些允许开发人员使用状态的功能,但是开发人员使用它们可以实现的功能是有限制的。
Ververica公司表示,旨在克服这些限制的Stateful Functions“使用户能够使用少量资源定义松耦合的、独立的功能, 在一个共享资源池中可以持续交互而且是可靠的。”Ververica联合创始人兼首席技术官Stephan Ewen和该公司产品营销经理Marta Paes在博客上写道。
该公司表示,Stateful Functions背后的API是基于“封装业务逻辑的小函数性片段,有点类似于actors”。每个实体通常有一个函数(例如一个用户或一个库存项)。“每个函数在局部变量中都有持久的用户定义状态,并且可以任意地向其他函数(包括它自己。)发送严格的一次保证消息。”Ewen和Paes写道。
当开发人员需要维护到实体的有状态连接,但又不想放弃事件驱动的体系结构的好处或脱离函数即服务(function as a service, FaaS)的开发风格时,这个新库是一个不错的选择。新的Stateful Functions方法并非为了替代无状态计算,而是在需要这两种方法时提供了新的前进路径。
Ververica表示,Stateful Functions都是在状态之上计算,而不是从状态之中计算。“这个模型的主要优点是状态和计算共存于网络的同一侧,这意味着您不需要往返每个记录去从外部存储系统获取状态(例如Cassandra,DynamoDB),也不是为了一致性的具体状态管理模式 (例如事件溯源、CQRS)。” Ewen和Paes写道。
Stateful Functions扩展了Flink,能够将有状态计算概念与Flink分布式的、无服务器的范例合并在一起
该公司表示,另外一个优势在于无需管理动态消息和维护复杂的复制或重分区策略。其中,持久性是通过为快照保持与对象存储的连接来实现的。新的方法还为实时流处理和离线批处理提供了高吞吐量,“允许您对事件驱动的应用程序和通用数据处理之间的界限进行模糊。”该公司表示。
Ververica在于德国柏林举行的Flink Forward大会上宣布了这一消息。今年早些时候,这家公司被阿里巴巴收购,目前正在以Apache 2.0的许可协议发布这款软件。
“在Kubernetes和FaaS等技术的推动下,无状态计算的编配已经取得了长足的进步,但大多数产品仍然无法满足有状态分布式应用的需求。始终如一地处理状态并在服务之间可靠地交互,这对整体开发的易用性构成了重大挑战。” Ewen 在一篇新闻稿中指出,“Stateful Functions是解决这些缺点的重要一步,提供了无缝的状态管理和一致性。”
【凡本网注明来源非中国IDC圈的作品,均转载自其它媒体,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。】