Jas*_*ark 7 linux load-balancing message-queuing activemq rabbitmq
帮助我理解一些东西。我查看了几个企业应用程序架构,我注意到其中几个使用 Message Queue 服务,例如 ActiveMQ 或 RabbitMQ。我对消息队列服务器的作用有表面上的了解,但我真的不明白为什么我会选择构建一个使用它的应用程序基础设施,而不是标准的负载平衡技术,如 HAProxy 等。
两者之间的真正区别是什么?两者似乎都将流量和/或消息路由到订阅队列或池的节点。这些都有优点/缺点吗?
EEA*_*EAA 15
正如迈克尔所说,这两者在功能和能力上有很大不同。
消息队列系统
消息队列服务的主要功能是允许应用程序的不同部分之间进行异步通信。MQ 服务器通常允许配置任意数量的路由规则、队列等,消息由应用程序的部分发布并由应用程序的其他部分订阅。
以视频转码应用程序为例。需要的基本功能是:
步骤 1 完成后,您真的希望用户的浏览器会话在进行转码时挂起 45 分钟吗?不,别这么想。因此,不是同步执行转码,而是将消息转储到有工作要做的消息队列中。然后这个消息被你的应用程序的后端处理部分接收,它执行转码,然后在完成时发布一个“我完成了!” 消息发送到不同的队列,这会触发应用程序的第三部分向用户发送电子邮件,告知他们的工作已完成。
除了分离应用程序的不同部分之外,MQ 系统还允许作业排队。假设您的硬件只允许您每 30 分钟处理一个视频,但在负载高峰期间,您的用户上传的视频不止于此。使用 MQ 允许这些作业优雅地排队并在后端能够这样做时按顺序处理。
负载均衡系统
负载平衡的主要功能是处理来自客户端的传入请求并将这些请求分发到一个或多个后端应用程序服务器。
结论
换句话说,消息队列服务专注于不同应用程序部分之间的异步通信,而负载平衡服务专注于客户端与一个或多个后端服务器池之间的同步通信。