赞
踩
在技术飞速发展的今天,企业和消费者对于服务性能的要求越来越高,促使企业把单一的服务向分布式服务迁移,也就是我们所说的微服务。
微服务带来高性能的同时也带来很多困难和挑战,比如如何解决服务之间的通信问题。在这样的背景下,消息队列的概念和实践应运而生,消息队列不仅使组件之间的通信变得更加简单,还为异步处理、负载平衡和系统解耦提供了工具。
消息队列,简单理解的话就是给消息用的队列,是一种中间件技术,用于处理分布式系统中的组件之间的通信。
服务A 要和服务B 通信,那么A 只需要把消息发送到队列里面,然后继续自己的事情,服务B 收到消息后会根据消息的内容执行相应的操作。
当然,消息队列的功能远不止这些,消息队列异步消息的特性决定了它能做很多的事情,比如在高并发场景中,先由消息队列抗下高并发请求,然后再以系统能够承受的速度把请求分发给系统进行处理。
再有就是消息队列可以实现模块之间解耦,软件开发常说的一句话就是:没有什么事情是加一层不能解决的。如果有,那就再加一层。这虽然是一句调侃,但确实是软件开发中常用的手段,对于系统之间耦合的问题,我们通过消息队列这个中间件来实现生产与消费的解耦,使系统更易于拓展。
要想学习消息队列,我们先学习一种广为流行的消息队列协议:AMQP
AMQP(Advance Message Queue Protocol)协议是一个应用层的,用于消息队列的开放标准协议。接下来我们首先了解AMQP 协议的基础概念
我们来整理一下这些概念:代理是一个AMQP协议服务端,代理的组件包括交换机、队列和绑定。消息队列是消息的存储结构,消息由生产者发送到代理,代理的交换机把消息路由到对应的消费者。
下图是对于这些组件关系的简单描绘:
直接交换机(Direct):这种交换机会尝试通过消息的路由键去匹配那些绑定到交换机的队列。用于处理一对一的路由关系
主题交换机(Topic):它是基于模式匹配的消息路由策略,根据消息的路由键和绑定键的模式来路由消息。绑定键可以包含两种特殊字符
*
:匹配一个词#
:匹配零个或多个词用于多播,既一个消息可以发送给多个匹配的队列。
PS:这里的词是指由(.
)分割的任意字符串
扇形交换机(Fanout):这中间换机会将消息广播到所有绑定的队列,不考虑路由键
头部交换机(Headers):这种交换机不是基于路由键,而是基于消息的头部属性来进行匹配
AMQP通过了消息确认机制,保证了消息的可靠性与持久性。例如银行的金融业务场景,是不能容忍消息丢失的。
听懂掌声,本篇文章主要讲了AMQP协议的一些核心概念,学习并了解这些概念能帮助我们更好地学习基于此协议的消息中间件(RabbitMQ),同时对于其他协议的消息中间件(RocketMQ)也能触类旁通。下篇文章我们会分享一个关于RabbitMQ的操作案例,喜欢别忘了关注我哦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。