代码之家  ›  专栏  ›  技术社区  ›  Dr.YSG

openswish和来自google flatbuffers的二进制数据

  •  1
  • Dr.YSG  · 技术社区  · 6 年前

    我们的数据是由一个模拟设备创建的,这个模拟设备通过一个有效载荷为google flatbuffers(二进制)的nanomsg放到网络上。

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

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

    我们可以采取哪种方法:

    1. 写一个转发器,将flatbuffer转换成json(fb有一个实用程序来完成此操作),然后将数据放在一个amqp总线上,该总线由openswitch监听?(我们有熟悉AMQP的人,但不是卡夫卡

    2. 尝试用Kafka做一些事情,它看起来(可能只是IBM版本)可以直接处理二进制flabuffer(可能仍然需要从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中的二进制based64数据转换为JSON

    1. 学习kakfa,然后转换nanomsg有效载荷(flatbuffers到json)。

    2. 还有别的吗?

    有没有人在这方面有直接的经验?


    更新

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

    1. 如果数据在google flatbuffers模式中,那么使用kafka二进制转换似乎没有任何优势,因为来自base64的mux/demux仍然需要在javascript层中完成。
    2. 卡夫卡(以其低延迟著称)正在对事件进行批处理,这有点令人不安。当一个人的IOT(传感器数据)需要对执行器(传感器-控制-执行器)进行闭环响应时,这确实会影响延迟,这是一个常见的机器人模型,而且与我们正在做的非常接近。目前,我们并没有提出延迟问题,但我可以看到新出现的情况,我们需要低延迟。卡夫卡威士忌供应商社区对此有何看法?
    3. 我一定错过了什么,但AMQP提供商说它正在使用Rhea https://github.com/amqp/rhea#receiver . 在编写处理传感器流数据的简单触发器/规则方面,这似乎提供了所有人的需求。为什么要用OpenWhisk?
    1 回复  |  直到 6 年前
        1
  •  2
  •   James Thomas    6 年前

    这两种选择都有意义。openswish操作接收并返回JSON消息。传递给这些函数的二进制数据必须是base64编码的。

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

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

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

    AMQP有一个外部社区饲料供应商 here . 这需要您手动安装和运行它。

    推荐文章