博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
消息中间件介绍
阅读量:565 次
发布时间:2019-03-09

本文共 1717 字,大约阅读时间需要 5 分钟。

消息中间件介绍

1. 消息中间件产生的背景

  1. 在网络通讯中,Http请求默认采用同步请求方式,基于请求与响应模式。
  2. 在客户端与服务器进行通讯时,客户端调用服务端接口后,必须等待服务器端完成处理后返回结果给客户端才能继续执行,这种情况属于同步调用方式。
  3. 如果服务器端发生网络延迟、不可达(宕机)的情况,可能客户端也会受到影响。一般来说我们会做好服务降级、熔断、隔离、限流等,这些虽然是微服务必做的,但这有点治标不治本,仅仅是解决了阻塞问题,并没有达到我们正常调用服务而不影响客户端的效果。
  4. 使用消息中间件后,只需要将消息写入队列,然后给客户端响应;消费者会自己消费队列中的消息。

2. 网络通讯采用同步方式

  • 优点:可以及时响应数据给客户端,整个过程是同步的
  • 缺点:可能会导致程序阻塞等待,效率比较低

3. Http协议同步接口调用补偿机制

问题:如果A服务调用B服务不通的情况下,如何保证数据一致性问题?

  • 传统的Http方式,采用补偿机制(重试),如果重试几次还是调不通,则存放日志表中,使用定时Job重试。
  • 要注意的是,服务端应该考虑网络延迟提交数据幂等性问题,防止接口重复调用。可以使用全局id或者tocken区分请求。

4. 消息中间件概述

消息中间件是分布式系统中重要的组件,主要解决应用解耦异步消息流量削锋消息通讯等问题。实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ等。

异步消息: 调用的服务不在线或繁忙,可以将消息缓存,待服务可用时再调用。
流量削锋: 在流量高峰期减轻流量、例如在秒杀系统中使用。
在这里插入图片描述

5. JMS规范

JMS是Java消息服务(Java Message Service)的缩写,是一个Java平台中面向消息中间件的API。

误区:消息队列是消息中间件的说法是错误的,消息指的是生产者和消费者之间传递的数据,而队列是存放消息数据的集合,因此被叫做消息队列;而消息中间件包含消息队列和发布/订阅(主题)。

角色划分:
  • 提供者:实现JMS规范的消息中间件服务器
  • 客户端:发送或接收消息的应用程序
  • 生产者/发布者:创建并发送消息的客户端
  • 消费者/订阅者:接收并处理消息的客户端
  • 消息:应用程序之间传递的内容
  • 消息模式:在客户端之间传递消息的方式,JMS中定义了主题(pub/sub 即发布/订阅)和队列(p2p 即点对点)两种模式。
点对点(p2p)模式:

P2P的特点:

  1. 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
  2. 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列
  3. 接收者在成功接收消息之后需向队列应答成功
    如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模式。

在这里插入图片描述

发布与订阅(pub/sub)模式:

Pub/Sub的特点:

  1. 每个消息可以有多个消费者
  2. 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。
    为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
  3. 如果你希望发送的消息可以不被做任何处理、或者被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型

在这里插入图片描述

5. 消息队列异步通讯与同步通讯区别

  • 串行方式(同步)
    总共耗时150ms
    在这里插入图片描述
  • 并行方式(发送邮件和短信采用异步,本质还是同步):
    总共耗时100ms
    在这里插入图片描述
  • 消息队列(异步)
    总共耗时55ms,注册信息写入消息队列后就响应给客户端,比串行提高了近3倍,比并行提高了近2倍
    在这里插入图片描述

6. 使用场景(流量削峰)

在这里插入图片描述

------------------------------------------------------- 学习不易 ,需要坚持 -------------------------------

转载地址:http://agqsz.baihongyu.com/

你可能感兴趣的文章