ZeroMQ - 在接受队列中的新客户端之前向客户端发送和接收多条消息

ZeroMQ - Send and receive multiple messages to a client before accepting new client from queue

是否可以将 ZeroMQ 与请求-回复式架构一起使用,其中服务器从客户端接受初始​​消息,然后专门与该客户端对话,直到它完成所有需要做的事情?使用标准套接字,这很容易实现,因为当服务器接受客户端连接时会创建一个新套接字。有没有一种我可以在 ZeroMQ 中实现的方法可以在获得大队列处理能力的同时给出相同的结果?

这是我之前的查询的后续,我最初的问题过于开放。我的情况涉及可能有数千个客户端同时与服务器通信,以尝试证明并获得解密库的密钥。证明过程有多个质询-响应式检查。此服务器无法线程化,因为密钥配置不是线程安全的,因为它使用英特尔 SGX 飞地。

让我们想象这样一个解决方案:

1 ) [1~10000]号客户端调用REQ.send()请求Attestation-server

回复

2 ) 无限循环中的证明服务器 REP.poll( 0, ZMQ_POLLIN )-s 检测任何新请求到达,如果传入队列中存在任何请求,它 REP.recv()-s 下一个请求到-回复

3 ) 根据证明服务器的决定,它可能但不需要向客户端提供有意义或无意义的响应,客户端要求证明并为 [=45= 准备和设置新的服务器端访问点]-按照上面的要求进行私人频道交流。一次性使用的接入点池或连接就绪接入点的旋转池(在可行和安全的情况下)可能有助于将此阶段的任何延迟减少到几乎为零的附加设置时间。

4 ) 客户端,无论是 POSACK 还是 NACK,REQ.recv()-s 来自证明服务器的回复,如果它是 POSACK 证明的,则包含新的 AccessPoint 定义(全套 transport-class 规范、地址规范、端口规范(如果对给定的 transport-class 有意义))。 NACK's cases should be directed so not determine any of the Attestation-server resources(一组保护策略的一个元素,以更好地将证明服务器与故意组织的大规模过载和其他类型的 DDoS 攻击隔离开来)

5 ) 轮到客户端尝试 .connect() 到证明服务器提议的接入点的新专用通道,如果在任何期间被 NACK,它可能无法成功如果需要,证明策略检查并定向到一些沙盒目标,以更详细地处理 NACK 和攻击尝试混合流的性质和动态演变。

6 ) POSACK 的客户端将在任何原型和编排的私人频道中保持对话,因此用于完成证明服务器证明过程的工具保留在服务器的意志和节奏。


可能涉及许多其他 ZeroMQ 功能 - 每通道加密、白名单/黑名单、其他 ISO/OSI-L2/L3/L4/L5/L7 配置选项,以提高证明服务器服务供应的稳健性。


EPILOGUE...和一些迟到的法律免责声明 :

希望我不只是通过打开智能分布式行为 Troyan 原型的潘多拉盒子来缩短 SGX 硅设计和制造的所有研发

:o)