1

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

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

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

我们可以采取哪种方法:

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

  2. 尝试用 Kafka 做一些事情,这似乎(可能只是 IBM 版本)可以直接处理二进制 Flabuffers(可能仍然需要从 NanoMSG 到 Kafka 的 shim。例如

如何在 Bluemix 中从 IoT 平台调用 OpenWhisk 操作

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

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

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

  2. 还有什么?

有人有这方面的直接经验吗?


更新

谢谢詹姆斯,这些都是现场链接。但它确实提出了一些次要问题:

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

1 回答 1

2

任何一种选择都有意义。OpenWhisk 操作接收和返回 JSON 消息。传递给这些函数的二进制数据必须经过 Base64 编码。

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

Kafka 提要提供程序确实支持二进制输入值的自动编码(使用 isBinary* 参数)。

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

这里有一个 AMQP 的外部社区提要提供者。这需要您手动安装和运行它。

于 2018-08-15T08:23:24.103 回答