我有多个(数千个)客户端连接到单个服务器并发送一些日志数据。
服务器分析数据并在必要时做出响应。
PUB
/SUB
是一个方向(监视器示例)。
REQ
/REP
无法识别对等方并专门回复对等方(仅适用于 ACK 等)。
我需要注册这些客户端,识别他们并能够在分析他们的日志后做出响应。
使用套接字,我有客户端套接字,在接受之后,我可以使用该套接字进行响应,并且客户端可以在我连接的同一个套接字上接收。
在我使用 0mq 的第一周,我没有在 ZeroMQ 中找到这样的东西。
ROUTER
套接字可以打印对等点的 id,但如何使用该 id 回复该对等点?
有更好的方法来处理这个问题吗?
None of them -- meaning not a single one !
. . . rather use more of 'em with some logic on a higher level of abstraction.
Why ?
因为马斯洛锤子:
“When the only tool you have ( ... want to use )
is a hammer,
every problem begins to resemble a nail.”
ZeroMQ 是一套可爱的、经过微调的通用构建块(根据它们对于最终实现组合中将使用哪种传输类的中立性),可在一个人的高级逻辑中重用它们。分布式系统设计和原型设计。
因此期待非常PUB
/SUB
, PAIR
/PAIR
或任何其他正式的可扩展通信原型原语将正确匹配系统要求,而缺少核心的好处,我们凡人已经从真正的 Martin SUSTRIK 和 Pieter HINTJENS 的智能消息传递团队获得了这些好处。
Proposal
人们可以想象以下的模型概念:
using:
-
Server .bind()
-s 并处理一个SUB
所有客户端都知道的端口,该端口订阅得足够好,可以从所有 id# 哈希客户端接收所有要处理的“日志”数据(并忽略任何其他数据入口——即使是旧版本的 ZeroMQ 也实现了SUB
侧过滤PUB
/SUB
原型将允许在服务器节点上可接受的性能负载下实现这一点)。 (当然,有人可能会反对,可能还有其他要求,以便更好地处理或避免完全 DDOS 类型的攻击等,但让我们在这个模型中保持微不足道)
-
client .connect()
-s it's PUB
角色,按需,并将其自身介绍给正在侦听的服务器SUB
-role + 移动日志数据,并且“挂起”或保持线路静默(在决定这组架构问题之前,应该对扩展和性能问题进行现场测试)。
-
服务器可能决定需要与 id# 散列的特定客户端进行一些临时对话,但不希望先验端口被另一个公开暴露.bind()
与静态端口#关联,因此服务器使用另一个.connect()
-ed 角色,一个PUB
,发送非常短的临时消息,从而具有可接受的系统范围相关开销、信令、电报到 id# 散列客户端的足迹(类似于启动端口敲门安全行为的软件方式),告诉它在哪里到.connect()
到服务器并解决额外的任务等(这样可以实现客户端的重新发现和注册维护,因此全局方案满足规定的要求,不将任何其他静态暴露给外部入侵者的端口暴露)
-
客户还有另一个.bind()
-ready SUB
角色,订阅监听服务器 id#-hashed 信令公告 + 设置说明,适当的客户端应该做什么.connect()
-反对-.bind()
(而相反的.bind()
/.connect()
方案只需要一点扩展的客户端重新发现维护)并且根据服务器端信号,这种事后处理可以在单独的(甚至是一次性使用的(完全一次性的))自组织通信基础设施上进行(无论是XREQ
/XREP
或其他双边正式通信模式原型或几种此类智能编排模式的某种更智能的组合),它不需要服务器具有静态公开的端口,但足以满足临时服务器/客户端请求处理。
Not happy with the sketched mock-up? ... no doubts, it's so primitive here
The Best Next Step:
After (cit.:) "我的 0mq 第一周“下一步可能要做的最好的一步是获得更多的全局视图,这对于尝试使用 ZeroMQ 进行编码的前几件事来说可能听起来很复杂,但是如果您至少跳到265页 https://hintjens.wdfiles.com/local--files/main:files/cc1pe.pdf of the [代码连接,第 1 卷][以 PDF 形式提供 >>> http://hintjens.wdfiles.com/local--files/main%3Afiles/cc1pe.pdf ] https://hintjens.wdfiles.com/local--files/main:files/cc1pe.pdf,如果不是逐步阅读的情况。
The fastest-ever learning-curve would be to have first an un-exposed view on the
Fig.60
Republishing Updates
and
Fig.62 HA Clone Server pair for a possible High-availability approach and then go back to the roots, elements and details.
无论如何,享受 ZeroMQ 的强大功能
and
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)