对于连接到单个服务器的多个客户端,我应该使用哪种双向 ZeroMQ 模式?

2024-04-11

我有多个(数千个)客户端连接到单个服务器并发送一些日志数据。

服务器分析数据并在必要时做出响应。

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 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(使用前将#替换为@)

对于连接到单个服务器的多个客户端,我应该使用哪种双向 ZeroMQ 模式? 的相关文章

随机推荐

  • 监控 Spring Embedded Tomcat 指标

    我想监控 Spring Boot 服务中嵌入的 Tomcat Spring 本身为我提供了一些会话使用统计信息 但我需要有关底层线程池的其他信息 如活动连接 队列长度等 我搜索了注册的bean 但找不到使用的线程池 关于如何检索该信息有什么
  • PHP:如何检查一年中的季节并相应地设置类别

    我有一个网站 它在标题区域使用 4 种不同的背景图像 这些图像在视觉上对应于耳朵的季节 夏季 秋季等 对于夏季时间框架 我使用一张图像 对于秋季时间框架 使用另一张图像 依此类推 问题是 一旦一年中的季节发生变化 我就必须手动更改这些图像
  • 使用office.js进行office加载项开发时,无法在word文档的书签中插入文本

    我正在开发一个 word 插件 主要任务是使用数据库中的数据填充文档中的书签 在 office js 中 我发现书签可以作为范围对象进行访问 并且我正在使用 rangeObject insertText text insertLocatio
  • wpf c# 按钮等待按钮按下

    好吧 我是编码初学者 所以我想做的是按钮谁会等待用户单击多个其他按钮之一以继续 void Mainbutton the program run throw so method Wait for the user to choose one
  • 了解 htaccess 文件匹配代码

    我正在尝试将 drupal 安装在我的 bluehost 托管网站的子目录中 这是一个巨大的痛苦 我认为 htaccess 中的以下几行是问题所在 当我当前导航到 mysite com subdir install php 时 出现 403
  • SML 中的 'a 和 ''a 有什么区别?

    例如 fun example a a list list a 将有以下签名 a list gt a list 如果我定义不同但内容相同怎么办 例如 fun example a a list list a 它的签名是 a list gt a
  • Android 手持设备和穿戴设备收不到消息

    我正在尝试从可穿戴设备向手持设备发送消息 然后从手持设备向可穿戴设备发送响应 两个模块都使用相同的代码和逻辑 Gradle compile com google android support wearable 2 0 0 alpha2 c
  • 图像数据类型 SQL Server 2008 C# 数据类型

    我创建了一个数据表 CREATE TABLE ProductImages ProductImageID int IDENTITY 1 1 NOT NULL ProductImage image NOT NULL CONSTRAINT PK
  • 设置属性“system.windows.resourcedictionary.deferrablecontent”引发异常

    我正在运行 Visual Studio 2012 当我向项目添加新文件 引用时 会出现消息框并显示错误消息 设置属性 system windows resourcedictionary deferrablecontent 引发异常 我读了一
  • Linux:如何对系统内存施加负载?

    我正在开发一个小功能 它可以让我的用户了解 CPU 的占用情况 我在用着cat proc loadavg 它返回众所周知的 3 个数字 我的问题是 当我正在开发时 CPU 目前没有做任何事情 有没有一种好方法可以在CPU上产生一些负载 我在
  • iOS 不使用[电子邮件受保护]

    我有 3 张图片 test png email protected cdn cgi l email protection email protected cdn cgi l email protection 在IBOutlet中 设置一个U
  • 如何绘制高分辨率图表

    我使用 matplotlib 绘制了一些实验结果 在这里讨论过 循环文件并绘图 https stackoverflow com questions 39676294 looping over files and plotting pytho
  • 计算非凸多面体的外向法线

    如果多面体的所有节点 可能是非凸的 及其坐标已知 面的点按顺序给出 绕外法线逆时针或顺时针 如何获得每个面的外法向量脸 这是凸多面体的一种方法 计算面法线和缠绕 https stackoverflow com questions 40454
  • 使用 Angular CLI 命令安装 Bootstrap 时如何解决依赖冲突?

    我尝试使用 CLI 命令在我的 Angular 应用程序中安装 Bootstrap ng 添加 ng bootstrap ng bootstrap 但我得到了以下错误回报 使用 Angular CLI 命令安装 Bootstrap 时如何解
  • NHibernate 中的延迟加载

    如果客户有很多订单 如何使用 NHibernate 延迟加载订单列表 是不是需要设置映射文件 任何帮助或例子都会很棒 克里斯的建议是我如何做到这一点 但是如果您想在运行时执行此操作 您可以根据您的标准将 Fetchmode 设置为惰性 如下
  • 忽略忽略属性

    我们有 MSTest 测试 它会在每小时的生产中自动运行 其中一项测试标有 Ignore 属性 因为它还没有准备好在我们的生产环境中运行它 现在我想 仅 在我的本地环境上启动该测试 因为我的本地环境已准备好进行该测试 我尝试通过单击测试代码
  • 将 select 的背景颜色设置为 JQuery 中选定的选项

    这个问题的后续 在 JQuery 中设置选择选项的背景颜色 https stackoverflow com questions 5065167 setting background color of select options in jq
  • FluentMigrator 失败的迁移不回滚?

    我刚刚开始尝试流利迁移器 http github com enkari fluentmigrator readme 我注意到失败的迁移不会被回滚 这还没有实施吗 这看起来相当糟糕 因为它使数据库处于损坏状态 例如 当第二次尝试添加 Tabl
  • 当窗口未最大化时缺少 WM_NCLBUTTONUP 消息的奇怪问题

    我有一个处理 WM NCLBUTTONUP 消息的窗口 以便处理标题栏中自定义按钮的点击 当窗口最大化时 这非常有效 但当窗口未最大化时 WM NCLBUTTONUP 消息永远不会到达 不过我确实收到了 WM NCLBUTTONDOWN 消
  • 对于连接到单个服务器的多个客户端,我应该使用哪种双向 ZeroMQ 模式?

    我有多个 数千个 客户端连接到单个服务器并发送一些日志数据 服务器分析数据并在必要时做出响应 PUB SUB是一个方向 监视器示例 REQ REP无法识别对等方并专门回复对等方 仅适用于 ACK 等 我需要注册这些客户端 识别他们并能够在分