美文网首页
利用分布式消息队列降低系统耦合性

利用分布式消息队列降低系统耦合性

作者: 代码的搬运工 | 来源:发表于2019-11-29 14:49 被阅读0次

队列是一种先进先出的数据结构,分布式消息队列可以看作将这种数据结构部署到独立的服务器上,应用程序可以通过远程访问接口使用分布式消息队列,进行消息存取操作,进而实现分布式的异步调用,基本原理如下图所示:

消息生产者应用程序通过远程访问接口将消息推送给消息队列服务器,消息队列服务器将消息写入本地内存队列后立即返回成功响应给消息生产者。消息队列服务器根据消息订阅列表查找订阅消息的消息消费者应用程序,将消息队列中的消息按照先进先出(FIFO)的原则将消息通过远程通信接口发送给消息消费者程序。

目前开源的和商业的分布式消息队列产品有很多,比较著名的如Apache ActiveMQ等,这些产品除了实现分布式消息队列的一般功能,在可用性、伸缩性、数据一致性、性能和可管理性方面也做了很多改善。

在伸缩性方面,由于消息队列服务器上的数据可以看作是被即时处理的,因此类型于无状态的服务器,伸缩性设计比较简单。将新服务器加入分布式消息队列集群中,通知生产者服务器更改消息队列服务器列表即可。

在可用性方面,为了避免消费者进程处理缓慢,分布式消息队列服务器内存空间不足造成的问题,如果内存队列已满,会将消息写入磁盘,消息推送模块在将内存队列消息处理完以后,将磁盘内容加载到内存队列继续处理。

为了避免消息队列服务器宕机造成消息丢失,会将消息成功发送到消息队列的消息存储在消息生产者服务器,等消息真正被消息消费者服务器处理后才删除消息。在消息队列服务器宕机后,生产者服务器会选择分布式消息队列服务器集群中其他的服务器发布消息。

分布式消息队列可以很复杂,比如可以支持ESB(企业服务总线)、支持SOA(面向服务的架构)等;也可以很简单,比如用MySQL也可以当做分布式消息队列;消息生产者程序将消息当做数据记录写入数据库,消息消费者程序查询数据库并按记录写入时间戳排序,就实现了一个事实上的分布式消息队列,而且这个消息队列使用成熟的MySQL运维手段,也可以达到较高的可用性和性能指标。

相关文章

  • RocketMQ介绍

     消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。Apac...

  • 面试利器!阿里内部强推的RocketMQ学习指南,不能再细了

    消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。 Apac...

  • 面试利器!阿里内部强推的RocketMQ学习指南,不能再细了

    消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。 Rock...

  • 利用分布式消息队列降低系统耦合性

    队列是一种先进先出的数据结构,分布式消息队列可以看作将这种数据结构部署到独立的服务器上,应用程序可以通过远程访问接...

  • 消息队列常见问题

    消息队列缺点 系统可用性降低:加入消息队列,当消息队列出问题,将会导致系统不可用,系统可用性会降低 系统复杂性增加...

  • 消息队列常见问题

    消息队列缺点 系统可用性降低:加入消息队列,当消息队列出问题,将会导致系统不可用,系统可用性会降低 系统复杂性增加...

  • 杂货 - 收藏集 - 掘金

    消息队列技术介绍 - 后端 - 掘金一、 消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、...

  • RabbitMq

    1. 消息队列 消息队列中间件是分布式系统中重要组件,主要解 决应用耦合,异步消息,流量消锋等问题。实现...

  • 初识消息队列

    终于等到你,消息队列。 概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。...

  • 消息队列技术介绍

    一、 消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能...

网友评论

      本文标题:利用分布式消息队列降低系统耦合性

      本文链接:https://www.haomeiwen.com/subject/okxgwctx.html