Google Flatbuffers中的OpenWhisk和二进制数据

时间:2018-08-14 23:17:42

标签: openwhisk rhea

我们将模拟设备创建的数据与NanoMSG一起放在网络上,并带有Google FlatBuffers(二进制)的有效载荷。

我们想使用OpenWhisk触发此数据的模式,并使用Flatbuffer编码的响应进行响应。

这里假设延迟和吞吐量不是大问题。

我们可以采取哪种方法:

  1. 编写一个将Flatbuffer转换为JSON的中继器(FB有一个实用程序来执行此操作),然后将数据放置到OpenWhisk监听的AMQP总线上? (我们有些人熟悉AMQP,但不熟悉Kafka

  2. 尝试对Kafka进行操作,这似乎(可能只是IBM版本)直接处理二进制Flabuffers(可能仍需要从NanoMSG到Kafka的填充程序。例如

How to invoke an OpenWhisk action from IoT Platform in Bluemix

https://medium.com/openwhisk/serverless-transformation-of-iot-data-in-motion-with-openwhisk-272e36117d6c

不确定我们是否仍然不需要Flatbuffers JavaScript解串器和序列化器将JavaScript中基于二进制的64位数据转换为JSON

  1. 学习Kakfa,然后将NanoMsg有效负载(从Flatbuffers转换为JSON)。

  2. 还有什么?

有人对此有直接经验吗?


更新

谢谢James,这些都是现场链接。但这确实引起了一些次要问题:

  1. 如果数据位于Google FlatBuffers模式中,则使用Kafka二进制转换似乎没有任何优势,因为base64中的mux / demux仍需要在javascript层中完成。
  2. Kafka(以其低延迟而闻名)正在批量处理事件,这有点令人不安。当需要对致动器(传感器->控制->致动器)进行闭环响应的物联网(传感器数据)是一种常见的机器人模型时,这确实会影响等待时间。在做。目前,我们没有解决延迟问题,但是我可以看到新兴的案例,其中我们需要低延迟。 Kafka Whisk提供程序社区对此有何想法?
  3. 我必须丢失一些东西,但是AMQP提供程序说它正在使用RHEA https://github.com/amqp/rhea#receiver。就编写用于处理传感器流数据的简单触发器/规则而言,这似乎满足了所有需求。为什么要使用OpenWhisk?

1 个答案:

答案 0 :(得分:2)

这两个选项都有意义。 OpenWhisk操作接收并返回JSON消息。传递给这些函数的二进制数据必须经过Base64编码。

如果使用AMQP提要,则可以将二进制数据手动转换为JSON。

Kafka feed provider确实支持对二进制输入值(使用isBinary *参数)进行自动编码。

Kafka供稿将大量消息推送到OpenWhisk操作。这与消息队列不同,后者一次只能推送一条消息。该提要提供程序是内置的OpenWhisk。

有一个AMQP here的外部社区供稿提供程序。这将需要您手动安装和运行。