来自 Google Flatbuffers 的 OpenWhisk 和二进制数据

OpenWhisk and binary data from Google Flatbuffers

我们有一个模拟设备创建的数据,该模拟设备使用 NanoMSG 将其放在网络上,有效载荷为 Google FlatBuffers(二进制)。

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

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

我们可以采取哪种方法:

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

  2. 尝试用Kafka做点什么,这似乎(也许它只是IBM版本)直接处理二进制Flabuffers(可能仍然需要从NanoMSG到Kafka的垫片。例如

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

不确定我们是否仍然不需要 Flatbuffers JavaScript 反序列化器和序列化器来将 JavaScript 中的二进制 based64 数据转换为 JSON

  1. 学习Kakfa,然后改造NanoMsg payload(Flatbuffers to JSON)。

  2. 还有别的吗?

有人对此有直接经验吗?


更新

谢谢 James,这些都是正确的链接。但它确实引发了一些次要问题:

  1. 如果数据在Google FlatBuffers模式中,使用Kafka二进制转换似乎没有任何优势,因为base64的mux/demux仍然需要在javascript层.
  2. 有点令人不安的是 Kafka(以低延迟着称)正在批处理事件。当一个人拥有需要在闭环中响应执行器(传感器->控制->执行器)的物联网(传感器数据)是一种常见的机器人模型时,这确实会影响延迟,这与我们的情况非常接近正在做。目前我们没有推动延迟问题,但我可以看到我们需要低延迟的新兴案例。 Kafka Whisk 提供商社区对此有何看法?
  3. 我一定是遗漏了什么,但是 AMQP 提供者说它正在使用 RHEA https://github.com/amqp/rhea#receiver。这似乎提供了编写一个简单的 trigger/rules 来处理传感器流数据的所有需求。为什么要使用 OpenWhisk?

两种选择都有道理。 OpenWhisk 操作接收 return JSON 消息。传递给这些函数的二进制数据必须经过 Base64 编码。

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

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

Kafka 将成批的消息推送到 OpenWhisk 操作。这与一次推送一条消息的消息队列不同。此提要提供程序是内置的 OpenWhisk。

AMQP here 有一个外部社区提要提供商。这需要您手动安装并运行。