在我们的分布式系统中有本机和.NET组件,有一个代理既可以充当网络拓扑资源管理器,也可以充当消息路由器。 运输和序列化由内部开发的组件提供 - 它是丑陋的和错误的。
我正在寻找提供RPC或消息传递以及序列化的解决方案。
我不需要 AMQP
经纪人,因为它需要额外管理交换和队列。
此外,我不需要系统中的消息持久性 - 每条消息都只是实时有价值。
我知道 Thrift
提供RPC和序列化 - 它只对我有用,因为我们系统中的某些通信基于 PUB
< / strong> / SUB
模式,而Thrift
并不适合此。
哪种 ZeroMQ
消息模式适合单向(异步)调用?
我们系统中的某些组件执行单向请求(这不是数据分发,因此我认为ZeroMQ
PUB
/ SUB
套接字不适用于此处。
ZeroMQ
REQ
/ REP
套接字也不是选项。也许还有其他一些模式?
答案 0 :(得分:0)
我想描述我的解决方案,它运作正常。正如@somdoron所建议的,我使用 DEALER-ROUTER 组合来发送请求(同步和单向)。
架构如下:
详情如何运作。
M{frame[0]=command, frame[1]=body}
FM{frame[0]=Identity, frame[1]=command, frame[2]=body}
PM{frame[0]=command, frame[1]=Identity, frame[2]=body}
,然后PUBLISHER将为后端分发此修改后的消息RM{frame[0]=Identity, frame[1]=result}
并使用PUSH套接字将结果发送给代理RM{frame[0]=Identity, frame[1]=result}
将被传递给Identity识别的前端。