被视为串流处理软体平台Apache Kafka的竞争对手Apache Pulsar,释出了2.0候选版,新增了名为Pulsar函式(Functions)的新功能,让使用者可以在处理串流资料的同时,不需要使用Apache Storm、Apache Heron或是Apache Flink等其他应用程式,就能进行逻辑运算处理。
还在Apache孵化器(Incubator)阶段的Apache Pulsar,前身是Yahoo的内部专案,用来支援分散式系统的网路应用程式,当时Yahoo平台的工程师Joe Francis与Matteo Merli,在2016年Yahoo开源Pulsar时提到,他们的应用程式需要提供即时服务,因此只能容忍平均约5ms,在第99个百分位数最多不能超过15ms的发布延迟,同时这个Pub/Sub讯息系统必须能支撑网际网路规模,具备排序、强健耐久性以及交付保证要求。
Matteo Merli提到,Yahoo需要一个託管服务能够提供一百万个主题订阅,但由于在市面上找不到这样的解决方案,能够同时提供需要的规模、性能以及功能,于是他们只好自己开始动手打造Pulsar,成为支援Yahoo的Flickr、Mail、Finance、Sports、Gemini Ads与Sherpa后台的关键服务。而后Matteo Merli离开了Yahoo,并成立了Streamlio来商业化Apache Pulsar。
现在Streamlio宣布对Apache Pulsar进行重大更新,释出了2.0版本,主要增加了Pulsar函式这个新功能,为的是要提供使用者在不需要使用Apache Storm、Apache Heron或是Apache Flink等资料处理生态系的其他应用程式,就能执行複杂的逻辑处理,也就是说Apache Pulsar讯息传递系统中绑进了运算基础架构。
官方提到,这个运作模式很简单,Pulsar函式可以接收来自单一或多个输入主题(Topic),在每次接受讯息后就能执行一些操作,像是对输入进行逻辑处理,并写入输出到Pulsar的输出主题(Output Topic)或是Apache BookKeeper服务,另外也能写入日誌到日誌主题(Log Topic)中做为除错用,或是计数功能。官方举例,Pulsar函式可被用来计算单词的出现频率,只要将句子主题做为输入,在函式中编写文字处理逻辑,就能分割字词计算个别出现的次数。
Pulsar函式在处理保证上,提供3种不同的讯息语意,可以使用在不同的函式上,至多一次交付(At-most-once)表示每条讯息可能会送到函式中处理也可能不会,至少一次(At-least-once)则能确保每个讯息最少被处理一次,而至少一次有效处理(Effectively-once)则保证每条讯息被送至函数都会关联一个输出。目前Pulsar Functions的SDK支援Java与Python两种语言,并使用Apache BookKeeper做为状态储存介面。