消息中间件基础

1 消息中间件的概念

消息中间件可以理解为传递消息的中间人,它是指一种在需要网络通信的系统之间建立通道,发送数据或文件的中间件。消息中间件是可以跨平台操作的,它可以屏蔽操作系统和编写应用所使用编程语言的差异。

大型的应用通常会被拆分成多个子系统,这些子系统可能会部署在多台机器上,也可能是一台机器的多个进程,这样的应用就是分布式应用。现在越来越多的分布式应用系统采用消息中间件方式来构建,人们通过使用消息中间件把应用扩展到不同的操作系统和不同的网络环境。基于消息的机制更适用于由事件驱动的应用,当一个事件发生时,消息中间件通知服务方应该进行如何操作。

使用消息中间件编程可以很好地扩展到不同的操作系统和硬件平台上。可以将消息中间件的核心安装在需要进行消息传递的系统上,并在它们之间建立逻辑通道,由消息中间件实现消息发送。消息中间件既可以支持同步方式通讯,又可以支持异步方式通讯。

2 为什么使用消息中间件

2.1 解耦

在多个系统通信当中,如果采用传统的模式,系统之间耦合性太强。比如现在有A、B、C三个系统,A系统通过调用B和C系统的接口传递消息,现在又出现了D系统需要接入A系统,那么A系统就需要修改代码,如此一来,操作过于麻烦。
如果使用中间件来进行操作,A系统只需要将消息写入发布到中间件,其他需要消息的系统自己从消息队列中订阅即可,从而使得系统A不需要任何的修改,达到了解耦的作用。

2.2 流量削峰

当遇到高并发的场景时,如果直接将用户请求的每一个数据都直接存储到数据库中,将会给数据库带来巨大的压力,如果并发访问量大到超过系统的承载能力,会使系统的响应延迟加剧,甚至会发生雪崩。在这种情况下,可以先使用消息队列将短时间高并发的请求持久化然后逐步处理,从而削平高峰期的并发流量,改善系统的性能。

2.3 日志收集

日志是项目中的重要部分,在设计初期很多系统可能各自独立记录日志,定位问题也需要到每个系统对应的目录中查看相应的日志。随着业务的发展,系统的功能越做越多,每天产生的日志也是海量的。在这种情况下,利用消息队列产品在接收和持久化消息方面的高性能,引入消息队列快速的收集日志消息,避免因写入日志时的某些故障导致业务系统访问阻塞、请求延迟等。

2.4 异步处理

传统模式下我们出息消息使用串行的方式,一些非必要的业务逻辑以同步的方式运行,太耗费时间。如果我们使用消息中间件方式,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度。

3 消息中间件的组成

3.1 Broker

消息服务器,作为server提供消息核心服务。

3.2 Producer

消息的生产和发送,负责生产消息传输给broker。

3.3 Consumer

消息消费者,业务的处理方,负责从broker获取消息并进行业务逻辑处理

3.4 Topic

主题,发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的广播。

3.5 Queue

队列,点对点模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收。

3.6 Message

消息体,根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值