use*_*252 36 messaging zeromq grpc
我想比较一下grpc与zeromq及其模式的某些功能:我想创建一些比较(功能集) - 不知何故 - 0mq是"更好"的套接字 - 但无论如何 - 如果我应用0mq模式 - 我得到可比的'框架'我认为 - 这里0mq似乎更灵活......
主要要求是:
有任何想法吗?
谢谢!
小智 46
两个库都允许同步或异步通信,具体取决于如何实现通信.有关gRPC,请参阅此页面:http://www.grpc.io/docs/guides/concepts.html.基本上,gRPC允许典型的HTTP同步请求/响应或"类似websocket"的双向流.对于0mq,您可以设置一个简单的REQ-REP连接,它基本上是一个同步通信路径,或者您可以创建异步ROUTER-DEALER类型类型.
"路由"本质上意味着消息通过某个代理从A到B.这在0mq中很简单,并且有许多类型支持这样的东西(http://zguide.zeromq.org/page:all#Basic-Reliable-Queuing-Simple-Pirate-Pattern).在gRPC中,可以通过流上的"pub-sub"类似连接创建相同类型的类型.gRPC支持将元数据放入消息中(https://github.com/grpc/grpc-go/blob/master/Documentation/grpc-metadata.md),这将允许您将消息"路由"到队列中'' pub-sub'连接可以从中拉出来.
gRPC有健康检查支持(https://github.com/grpc/grpc/blob/master/doc/health-checking.md),但因为它是HTTP/2,你必须有一个HTTP/2负载均衡器支持健康检查.但是,这不是什么大问题,因为您可以将运行状况检查绑定到负载均衡器调用的HTTP/1.1服务.0mq是tcp连接,这意味着负载均衡器可能会检查tcpmode中的"套接字连接"以验证连接.这可行,但它不是很好.再次,你可以使用负载均衡器读取的HTTP/1.1网络服务器获得光滑的前端0mq服务.
两者都有很好的记录.必须阅读0mq的文档才能完全理解该技术,并且更具有更高的提升能力.
这是最大的区别:
小智 29
不太一样.gRPC主要用于异构服务互操作性,ZeroMQ(ZMQ/0MQ /ØMQ)是一种较低级别的消息传递框架.ØMQ除了传递二进制blob之外不指定有效负载序列化,而gRPC默认选择Protocol Buffers.ØMQ几乎停留在数据中心/云之间的相同机器或机器上,而gRPC也可能在真实客户端上工作(即移动或网络,它已经支持iOS).与http2请求/响应链的开销,延迟和复杂性相比,使用ØMQ的gRPC对云内/数据中心服务的速度更快,效率更高.我不确定gRPC TLS安全性如何(或者甚至是否)足以满足公共云和移动/网络的使用,但总是可以在应用程序的路由器/控制器级别注入端到端安全要求(即libsodium)/app框架并以纯文本模式运行(由于上游漏洞,这也会导致OpenSSL fork BoringSSL导致维护问题).
对于非常高延迟/低带宽的服务(即任务到火星),可以考虑使用像SMTP(即Active Directory备用复制)或MQTT(即Facebook Messenger,ZigBee,SCADA)这样的传输的RPC.
奖金(偏离主题):如果gRPC有像ØMQ这样的备用可插拔传输(它本身也支持UNIX套接字,TCP,PGM和inproc)会很好,因为HTTP/2在所有语言中都不稳定,并且它比ØMQ.并且,值得关注nanomsg(特别是在HFT世界中),因为它可以通过RDMA/SDP/MPI进行扩展,并使疯狂的低延迟/零拷贝/ Infiniband就绪.
| 归档时间: |
|
| 查看次数: |
12941 次 |
| 最近记录: |