而不是编写自己的库。

我们正在这里的一个项目中进行工作,该项目将是一个自划分服务器池,如果其中一个区域变得太重,经理将对其进行划分并将其作为单独的进程放置在另一台计算机上。它还会警告所有连接的客户端,这会影响连接到新服务器。

我很好奇将ZeroMQ用于服务器间和进程间通信。我的伴侣更愿意自己动手​​。我希望社区能够回答这个问题。

我本人是一个相当新手的程序员,刚刚了解了消息传递队列。当我搜索和阅读时,似乎每个人都在使用消息队列来处理各种事情,但是为什么呢?是什么使它们比编写您自己的库更好?为什么它们如此普遍,为什么那么多?

最佳答案



推出应用程序的第一个版本时,可能什么都没有:您的需求得到了很好的定义,并且您将开发出满足您需求的消息传递系统:小的功能列表,小的源代码等。

当您实际上必须扩展应用程序并为其添加更多功能时,这些工具在第一个发行版之后非常有用。
让我给你一些用例:

  • 您的应用程序必须与一台小端机(x86,intel / amd)与一台大端机(sparc / powerpc)进行通信。您的消息传递系统具有一些字节序排序假设:去修复它
  • 是您设计的应用程序,因此它不是二进制协议(protocol)/消息系统,但现在它非常慢,因为您花费了大部分时间对其进行解析(消息数量增加并且解析成为瓶颈):对其进行调整,以便可以传输二进制文件/固定编码
  • 刚开始时,您在一个局域网内有3台计算机,所以不会明显延迟所有内容到达每台计算机的时间。您的客户端/老板/ pointed-hair-devil-boss出现并告诉您,您将在不受管理的WAN上安装该应用程序-然后开始出现连接失败,延迟时间长等情况。您需要存储消息并重试发送他们稍后:返回代码,并将其插入(并享受)
  • 发送的
  • 消息需要答复,但不是全部答复:您在其中发送一些参数,并期望得到电子表格,而不仅仅是发送并确认,然后返回代码并将其插入(并享受)。
  • 一些消息很关键,那里的接收/发送需要适当的备份/持久性/。你为什么问 ?审核目的

  • 还有我忘记的许多其他用例...

    您可以自己实现它,而不必花费很多时间:反正以后您可能会替换它。

    10-01 06:59
    查看更多