博客
关于我
消息中间件介绍
阅读量:566 次
发布时间:2019-03-09

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

消息中间件引入与应用分析

随着分布式系统的普及,消息中间件逐渐成为现代应用开发的重要组成部分。消息中间件不仅解决了应用间通信的耦合问题,还通过异步消息、流量削峰等功能,为系统的可用性和性能提供了显著提升。本文将从背景、协议、模式及应用场景等方面对消息中间件进行深入介绍。


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

在网络通信中,HTTP请求原先主要采用同步请求方式,基于请求与响应的模式。这种方式在客户端与服务器通信时,需要等待服务器完成处理后才能返回结果,这种同步调用方式虽然直观,但在面临网络延迟或不可达情况时会导致客户端等待时间过长,影响整体效率。

传统的补偿机制,例如 retry 和定时重试,虽然能在一定程度上解决问题,但并没有根本解决客户端等待的痛点。在此背景下,消息中间件应运而生。通过将消息写入队列,客户端可以立即返回响应,而消费者异步消费消息,解除了同步阻塞问题。


2. 网络通讯中的同步方式

HTTP协议的同步通信方式虽然简单易用,但存在以下主要缺点:

  • 优点:能够及时响应客户端请求,整个过程显得直观且无需额外知识。
  • 缺点:容易引发程序阻塞,降低了系统的效率。特别是在高并发场景下,单线程处理会成为性能瓶颈。

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

针对网络通讯中的不可靠性问题,通常采用补偿机制(如重试)来保证数据一致性。以下是传统与现代方案的对比:

传统方案:

  • 重试机制:在无法连接服务端时,通过记录日志并使用定时任务重试。
  • 注意事项:
    • 防止接口重复调用,可以通过全局ID或token区分请求。
    • 建议结合网络延迟和幂等性设计,避免客户端过度频繁调用接口。

现代方案:

消息中间件通过异步通信方式解决了传统方案的不足。发送一条消息后,立即返回处理完成的响应,而消费者异步处理消息,最大化了资源利用率。


4. 消息中间件概述

消息中间件是分布式系统中重要的核心组件,主要功能包括:

  • 应用解耦:允许服务之间无需直接通信,通过消息进行交互。
  • 异步通信:发送消息后立即返回,消费者自行处理。
  • 流量削峰:在高并发或高流量时段,减轻系统负担。
  • 常见的消息中间件有 RabbitMQ、Kafka、RocketMQ等。其核心优势在于高性能、高可用性以及可扩展性,使得系统能够在线扩容。


    5. JMS规范解析

    JMS(Java消息服务)是标准化Java平台中消息中间件的应用接口。它定义了两种核心模式:

  • 点对点(P2P)模式

    • 消息仅供特定消费者处理,发送者与接收者之间无时间依赖。
    • 接收者需向消息队列确认接收,确保消息成功传递。
  • 发布与订阅(Pub/Sub)模式

    • 单个主题允许多个订阅者消费消息,减少了订阅者的等待时间。
    • 通过持久化订阅机制,允许订阅者在非活跃状态下继续接收消息。

  • 6. 消息队列与同步通信的区别

    通过对比串行、并行和消息队列方式的耗时表现,可以快速看出消息队列方式的优势:

    • 串行方式:总耗时150ms,程序需等待接口响应。
    • 并行方式:总耗时100ms,虽然采用异步但本质上仍需等待。
    • 消息队列:总耗时55ms,消息一旦入队即可立即响应,效率显著提升。

    7. 流量削峰应用场景

    在秒杀、点红包等高并发场景中,消息中间件能够有效分担服务器压力:

  • 请求分片:将单个请求分解为多个小请求,分布式处理。
  • 消息异步路由:将请求写入队列后立即返回,避免前端等待。
  • 最终一致性:通过消息重试机制,确保高并发下最大化处理能力。

  • 通过以上分析可见,消息中间件不仅是解决传统同步通信问题的有效工具,更是提升系统性能和可用性的关键。在实际应用中,应根据具体需求选择合适的消息中间件和模式,最大化资源利用率并实现高效通信。

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

    你可能感兴趣的文章
    mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
    查看>>
    mysql 通过查看mysql 配置参数、状态来优化你的mysql
    查看>>
    mysql 里对root及普通用户赋权及更改密码的一些命令
    查看>>
    Mysql 重置自增列的开始序号
    查看>>
    mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
    查看>>
    MySQL 错误
    查看>>
    mysql 随机数 rand使用
    查看>>
    MySQL 面试题汇总
    查看>>
    MySQL 面试,必须掌握的 8 大核心点
    查看>>
    MySQL 高可用性之keepalived+mysql双主
    查看>>
    MySQL 高性能优化规范建议
    查看>>
    mysql 默认事务隔离级别下锁分析
    查看>>
    Mysql--逻辑架构
    查看>>
    MySql-2019-4-21-复习
    查看>>
    mysql-5.6.17-win32免安装版配置
    查看>>
    mysql-5.7.18安装
    查看>>
    MySQL-Buffer的应用
    查看>>
    mysql-cluster 安装篇(1)---简介
    查看>>
    mysql-connector-java.jar乱码,最新版mysql-connector-java-8.0.15.jar,如何愉快的进行JDBC操作...
    查看>>
    mysql-connector-java各种版本下载地址
    查看>>