来自 Google Flatbuffers 的 OpenWhisk 和二进制数据
OpenWhisk and binary data from Google Flatbuffers
我们有一个模拟设备创建的数据,该模拟设备使用 NanoMSG 将其放在网络上,有效载荷为 Google FlatBuffers(二进制)。
我们希望使用 OpenWhisk 触发此数据的模式,并使用 Flatbuffer 编码的响应进行响应。
假设延迟和吞吐量在这里不是大问题。
我们可以采取哪种方法:
编写一个将 Flatbuffer 转换为 JSON 的转发器(FB 有一个实用程序可以执行此操作),然后将数据放置到 OpenWhisk 侦听的 AMQP 总线上? (我们有熟悉 AMQP 的人,但不熟悉 Kafka
尝试用Kafka做点什么,这似乎(也许它只是IBM版本)直接处理二进制Flabuffers(可能仍然需要从NanoMSG到Kafka的垫片。例如
不确定我们是否仍然不需要 Flatbuffers JavaScript 反序列化器和序列化器来将 JavaScript 中的二进制 based64 数据转换为 JSON
学习Kakfa,然后改造NanoMsg payload(Flatbuffers to JSON)。
还有别的吗?
有人对此有直接经验吗?
更新
谢谢 James,这些都是正确的链接。但它确实引发了一些次要问题:
- 如果数据在Google FlatBuffers模式中,使用Kafka二进制转换似乎没有任何优势,因为base64的mux/demux仍然需要在javascript层.
- 有点令人不安的是 Kafka(以低延迟着称)正在批处理事件。当一个人拥有需要在闭环中响应执行器(传感器->控制->执行器)的物联网(传感器数据)是一种常见的机器人模型时,这确实会影响延迟,这与我们的情况非常接近正在做。目前我们没有推动延迟问题,但我可以看到我们需要低延迟的新兴案例。 Kafka Whisk 提供商社区对此有何看法?
- 我一定是遗漏了什么,但是 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 有一个外部社区提要提供商。这需要您手动安装并运行。
我们有一个模拟设备创建的数据,该模拟设备使用 NanoMSG 将其放在网络上,有效载荷为 Google FlatBuffers(二进制)。
我们希望使用 OpenWhisk 触发此数据的模式,并使用 Flatbuffer 编码的响应进行响应。
假设延迟和吞吐量在这里不是大问题。
我们可以采取哪种方法:
编写一个将 Flatbuffer 转换为 JSON 的转发器(FB 有一个实用程序可以执行此操作),然后将数据放置到 OpenWhisk 侦听的 AMQP 总线上? (我们有熟悉 AMQP 的人,但不熟悉 Kafka
尝试用Kafka做点什么,这似乎(也许它只是IBM版本)直接处理二进制Flabuffers(可能仍然需要从NanoMSG到Kafka的垫片。例如
不确定我们是否仍然不需要 Flatbuffers JavaScript 反序列化器和序列化器来将 JavaScript 中的二进制 based64 数据转换为 JSON
学习Kakfa,然后改造NanoMsg payload(Flatbuffers to JSON)。
还有别的吗?
有人对此有直接经验吗?
更新
谢谢 James,这些都是正确的链接。但它确实引发了一些次要问题:
- 如果数据在Google FlatBuffers模式中,使用Kafka二进制转换似乎没有任何优势,因为base64的mux/demux仍然需要在javascript层.
- 有点令人不安的是 Kafka(以低延迟着称)正在批处理事件。当一个人拥有需要在闭环中响应执行器(传感器->控制->执行器)的物联网(传感器数据)是一种常见的机器人模型时,这确实会影响延迟,这与我们的情况非常接近正在做。目前我们没有推动延迟问题,但我可以看到我们需要低延迟的新兴案例。 Kafka Whisk 提供商社区对此有何看法?
- 我一定是遗漏了什么,但是 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 有一个外部社区提要提供商。这需要您手动安装并运行。