物联网请求响应协议

Dom*_*mra 12 parallel-processing android low-latency mqtt iot

我们需要构建一个可以与运行Android变体的某些嵌入式设备通信的服务器.我们需要能够向设备发送命令,并接收响应.一个简单的命令可能是询问设备的状态.我们不会有HTTP,所以我们需要让客户端/设备与服务器建立连接.

我们正在考虑使用MQTT,因为它具有许多不错的属性(QoS,轻量级,为物联网构建),但它本身不支持请求响应工作流.

我们已经考虑过在MQTT之上构建RPC,但在我们开始之前,我只是想让人们对此问题有所了解.Websockets,WAMP,ZeroMQ会更好吗?


编辑:

Q1: 我们甚至需要RPC吗?

Q2: 有没有一种方法来构建系统,我总是发送异步类型的消息,仍然提供良好的用户体验?

Q3: 任何例子?

寻找实施示例并亲身体验使用单个设备构建物联网通信系统的经验.

use*_*197 6

" 一刀切 "可能听起来像T恤的" 聪明 "口号,
但一旦真实世界的实施规模扩大

" 正确尺寸 "和" M inimum ",就会导致事后尝试修复设计不良的建筑物的噩梦V iable- P产品为准"为刚刚足够的设计有更好的生存机会物联网秤和保持战略成本-的适应接受的(以最近VW全球设备固件更新的只是规模,预计将有大约-2.5%对匈牙利和前捷克斯洛伐克地区的德国和汽车供应链造成-3.0%的GDP不利影响 - 是的,合作伙伴关系
IoT域名不仅仅是琐碎的数量$.)


物联网领域特定架构的智能工具是必须的

应该首先考虑的事实是,IoT域与传统的传统计算体系结构的规模相差几个数量级.最小化本地资源(通过设计,也在上面提到),大规模/计数与不受控制的并发性,真正的并行PARALLELCONCURRENT SEQUENTIAL性的巨大同步复杂性(如果需要这样的系统设计),参考:a v/s 消歧链接.

因此,在该给定状态的上下文中需要适当选择工具.

虽然AMQP和其他power-MQ工具非常适合基于代理(如果设计良好,中央MQ代理不需要单点故障并且仍然只是"性能瓶颈")IoT设备架构的开销是要仔细验证,是否可行.

无经纪人的ZeroCopy,ZeroSharing,ZeroBlocking,ZeroLatency (......差不多)

管道模式 虽然AMQP已经为众所周知的无经纪人权力打开了大门,ZeroMQ但当马丁·斯奥西克重新定义规则并随之而来时,这又发生了又一步nanomsg.

nanomsg除了它的便携性和轻量级或恰到好处的权重之外,它本身就是一个很好的候选人,可以为IoT合作模型做好准备,让你的项目比问题REQ/ 需要的更多 - 更高级的行为,类似一个问,所有的投票REP SURVEY 调查模式
BUS分散路由
总线-或者定向的单向管在大规模传感器网络中的分布式处理组合物中是特别有吸引力的并且是一个可爱的例子PIPE


临时补充问题的答案:

A1:是的,如果设计架构需要,RPC可能会使用相同的统一信令框架(不是重新发明轮子或只是添加另一个分布式层)Remote Proceducer Call

A2:是的,Martin SUSTRIK的ZeroMQ类似无代理几乎零延迟nanomsg框架非常适合进程间消息/信令服务.您的顶级设计决定了这些功能是否可以在任何接近其(非常大的)全部潜力的地方使用,或者浪费在表现不佳的使用模式上.为了了解它们的限制,FOREX事件流以低于微秒的分辨率时间戳执行事件的虚假爆炸.在那里你真的需要一个框架,即robust (处理这样的爆炸),fast(不是为了增加不必要的延迟),弹性linear-scaleable(内部能力可以按需处理负载均衡).经过实践经验,我可以确认我自己的团队的创造力(虽然高度赞赏并经过现场测试,在列表上有数十年成功的项目成就)是用户体验的限制因素,而不是ZeroMQ/ nanomsg智能框架.

A3:是的,已经使用了几年ZeroMQ(目前正在进行nanomsg端口的DLL/LIB适配),用于远程(负载平衡)中央日志记录(软实时最小延迟驱动,卸载分布式代理的功能).除非你的系统跨度长成的空间(其中往返延迟很容易在几分钟小时)这modus operandi是既聪明和接近"刚刚够用" -设计理念.


小智 5

根据您对物联网轻量级请求/响应协议的要求,IETF标准CoAP(http://coap.technology/)可能很有用.它重量轻,您可以在其上构建RESTful服务.

另一件值得考虑的事情是服务器的"数据模型"和"服务接口".选择基于标准的通信协议(如HTTP,MQTT,CoAP)非常重要,但选择基于标准的可互操作传感器数据模型和接口可能同样重要,这样您的应用程序可以互操作且不需要担心它很快就会过时.开放地理空间联盟(OGC)SensorThings API(http://ogc-iot.github.io/ogc-iot-api/)可能是一个值得考虑的选择.它是一个开放标准,它的数据模型基于ISO 19156观察和测量.