我们有一个模拟设备创建的数据,该设备使用 NanoMSG 与 Google FlatBuffers(二进制)的有效负载放在网络上。
我们希望使用 OpenWhisk 触发此数据的模式,并使用 Flatbuffer 编码的响应进行响应。
假设延迟和吞吐量在这里不是一个大问题。
我们可以采取哪种方法:
编写一个转发器,将 Flatbuffer 转换为 JSON(FB 有一个实用程序可以做到这一点),然后将数据放到 OpenWhisk 监听的 AMQP 总线上?(我们有熟悉 AMQP 的人,但不熟悉 Kafka
尝试用 Kafka 做一些事情,这似乎(可能只是 IBM 版本)可以直接处理二进制 Flabuffers(可能仍然需要从 NanoMSG 到 Kafka 的 shim。例如
如何在 Bluemix 中从 IoT 平台调用 OpenWhisk 操作
不确定我们是否仍然不需要 Flatbuffers JavaScript 反序列化器和序列化器来将 JavaScript 中的二进制 based64 数据转换为 JSON
学习 Kakfa,然后将 NanoMsg 负载(Flatbuffers 转换为 JSON)。
还有什么?
有人有这方面的直接经验吗?
更新
谢谢詹姆斯,这些都是现场链接。但它确实提出了一些次要问题:
- 如果数据在 Google FlatBuffers 模式中,使用 Kafka 二进制转换似乎没有任何优势,因为来自 base64 的 mux/demux 仍然需要在 javascript 层中完成。
- Kafka(以低延迟着称)正在对事件进行批处理,这有点令人不安。当一个人有物联网(传感器数据)需要在执行器(传感器->控制->执行器)的闭环中响应时,这确实会影响延迟,这是一种常见的机器人模型,这与我们的模型非常接近正在做。目前我们并没有推动延迟问题,但我可以看到我们需要低延迟的新兴案例。Kafka Whisk 提供者社区对此有何看法?
- 我一定遗漏了一些东西,但 AMQP 提供商说它正在使用 RHEA https://github.com/amqp/rhea#receiver。在编写用于处理传感器流数据的简单触发器/规则方面,这似乎满足了所有需求。为什么要使用 OpenWhisk?