9

我一直在玩弄将 gRPC 用于“IoT”类型设备的想法;不是很受限制的东西,比如传感器;更像是单板计算机内置设备,如机器人、无人机等。由于设备是单独开发的,并且可能由其他公司开发,因此需要设备和集中控制器之间的接口。所以版本化的界面语言是必须的;它不应该只是在一个word文档中;一些可编程的东西,比如头文件、WSDL、IDL 或 ProtocolBuffer。同样在设备和控制器之间,应为注册、重新注册等常见用例指定行为。这可以在 word 文件或一些非技术文档中。

Protocol Buffer (ver 3) 中的 (rpc) 接口规范以及通过 gRPC 的高效实现使我选择了 CoAP/LWM2M(乐山 Java 和 C++ 实现)。

使用过 LWM2M 和 grPC,我想说 gRPC 对开发人员更友好;与OMA LWM2M流程相比,接口定义和实现速度很快。当然gRPC中没有Observer-Notify,但对于那个MQTT就足够了。

严格来说,不能将 LWM2M 与 gRPC 进行比较。LWM2M 不仅仅是接口,它还定义了许多 IoT 案例中的行为,如 BootStrap、Registration、KeepAlive、SW 升级等,它的通用 HTTP(如 GET、PUT)在 URL 类型的可寻址资源上使其非常完整。然而,大多数这些行为都可以通过一些努力来自定义。

我们计划编排的一些物联网事物远不是像灯泡这样的小脑设备,更像是机器人。有没有人将 gRPC 用于类似目的。任何成功的失败故事分享

4

4 回答 4

6

我在物联网的 gRPC 中错过的是 MQTT MQ 功能,例如消息队列、代理桥接 QoS 参数。或者对于 CoAP,通过 SMS 传输的带外消息。在这种情况下,gRPC“只是”一个假定始终通过 TCP 连接的 RPC 框架。

于 2017-08-24T18:54:55.133 回答
3

我已经冒险并在一个连接了“设备”的项目中使用了它;这些是像 Raspberry-pi 这样的小型计算机。总的来说,这是一次很好的体验;使用的语言主要是 C++ 和 Java,还有 Node.js 中的 JavaScript。我们将其用作 Dockerized 微服务;负载均衡是我们没有做过的;我读到基于 HTTP/2 的负载平衡很棘手;将更新该部分;计划为此使用 Kubernetes。具有版本化接口的整体容器技术 - GRPC 似乎非常适合(微)服务

于 2017-06-01T04:31:58.427 回答
2

我们正在考虑与 Joe 相同的解决方案,其中包括 CoAP + Protobuf:

  • Protobuf 及其 IDL 是一种以集中方式定义和管理我们的 API 的非常有用的方法。Google 的api-linterAIP是保持一切正常的高质量资源。
  • CoAP for transport:物联网设备的轻量级协议。它几乎在每个 RTOS/嵌入式/平台中都可用,它适应了我们在这个世界上通常面临的低带宽。作为 Thread 选择的协议,以及Project Connected Home Over IP给予它的支持也确实有帮助。
  • 对消息使用 Protobuf,无论它们是请求/响应,甚至是物联网设备推送的事件消息。nanopb已经解决的一个问题,它是用于嵌入式系统的 protobuf 线兼容 C 代码生成器。
  • 基于 IDL 生成我们自己的存根,以在 CoAP 和 nanopb 代码上创建我们自己的包装器。通过利用 CoAP 可观察机制,支持一元调用和服务器流式传输。
于 2020-07-15T12:40:01.740 回答
0

我使用带有 CoAP 和 protobufs 的 esp32 和 R_Pi。据我所知,esp32/8266 不支持 gRPC。我对此很满意,但没有对 lwm2m 进行任何具体测试。实施在这里

于 2019-08-02T20:24:01.283 回答