如何在服务器群集中的服务器之间进行通信?
发布时间:2020-07-15 点击数:4437
在建立服务器群集时,群集中的服务器需要进行通信。例如,Client1(简称C1)连接到Server1(简称S1),Client2连接到Server2,并且Client1需要向Client2发送消息。 S1不知道C2已连接到S2。
我想到了两个选择:
方案A:采用组播(或广播)。 S1收到C1消息后,发送广播报文查询C2所在服务器。此时,S2回复S1,S1将消息发送到S2,S2将其转发到C2,但是udp并不可靠,尽管服务器位于同一局域网中,如果消息丢失,则C2可以没有收到C1的消息。
选项B:添加路由服务器,所有服务器都连接到路由服务器(tcp长连接),S1将消息转发到路由服务器,路由服务器广播到所有服务器,由每个服务器判断,但是复杂度高程序数量的增加顺便说一下,如果消息数量大量增加,则每个服务器将处理自身未处理的消息,并且路由服务器将成为瓶颈。
这不是消息队列。简单的可以使用zeromq来完成,稍微复杂的可以使用Rabbitmq / activemq / qpid和其他成熟的解决方案。
Rabbitmq
MQ被称为消息队列,消息队列(MQ)是一种应用程序到应用程序的通信方法。应用程序通过在队列(应用程序的数据)之间读取和写入消息进行通信,而无需专用连接来链接它们。消息传递是指通过发送消息中的数据进行通信的程序,而不是通过直接相互调用来相互通信的程序,通常用于诸如远程过程调用之类的技术。排队是指通过队列进行通信的应用程序。队列的使用消除了接收和发送应用程序以同时执行的需求。在更成熟的MQ产品中,有IBM WEBSPHERE MQ等。
ActiveMQ
1. ActiveMQ是一种消息排队技术,其诞生是为了解决高并发问题!
2. ActiveMQ生产者消费者模型(生产者和消费者可以跨平台和系统)
有中间平台3,ActiveMQ支持两种消息传输方式
1)队列,队列模式,生产者产生一条消息,该消息只能由一个消费者使用
2)主题,发布/订阅模型,生产者产生一条消息,可由多个消费者使用
Qpid
AMQP是用于业务消息的开放网络协议。他定义了一个二进制的线级协议,该协议允许双方执行可靠的业务消息传递。该协议的目标是成为所有消息中间件之间互操作性的标准协议。
消息队列是进程间通信线程之间或同一进程的不同线程之间的通信方法。
Qpid是Apache开发的消息队列,实现AMQP协议并支持多种语言和多种平台。
零平方米
这是一系列类似于Socket的接口。它和Socket的区别在于普通套接字是端到端的(1:1关系),而ZMQ是N:M关系。您了解有关点对点连接的更多信息。点对点连接需要显式建立连接,破坏连接,选择协议(TCP / UDP)和处理错误。 ZMQ屏蔽了这些细节,使您的网络编程更加轻松。 ZMQ用于节点与节点之间的通信。节点可以是主机或进程。
引用官方声明:“ ZMQ(ZeroMQ缩写为ZMQ)是一个简单易用的传输层。它是一个类似于框架的套接字库。它使套接字编程更简单,更简洁并且具有更高的性能。它是一个消息处理队列库,可以在多个线程,核心和主机盒之间灵活伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,然后进入Linux内核。”他们还没有看到他们的成功,但是,毫无疑问,这是极其有希望且要求更高的BSD套接字上的封装层。ZMQ使编写高性能网络应用程序变得极为轻松和有趣。
这不只是一个消息队列吗?简单的可以使用zeromq完成,稍微复杂的可以使用Rabbitmq / activemq / qpid和其他成熟的解决方案
希望全网数据小编的方法对大家有用,全网数据为大家提供专业的深圳服务器托管,深圳服务器租用,深圳主机托管,云服务器租用等服务器资源,详情欢迎咨询客服了解。