博客
关于我
MQ(1)---消息队列概念和使用场景
阅读量:457 次
发布时间:2019-03-06

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

消息队列概念和使用场景

声明

本文转自某技术博客,内容完整,已经过审核,可直接使用。


一、什么是消息队列

消息即是信息的载体。为了让消息发送者和接收者都能理解消息内容,必须遵循一种统一的格式——消息协议(JMS)。因此,有效的消息必须具有特定的格式,而没有格式的消息是无法传递的。

消息的传递方式主要有两种:

  • 即时消息通讯:消息在发送后立即到达接收者,常见实现方式为RPC或HTTP。
  • 延迟消息通讯:消息首先存储在容器中,等待特定条件后再传递。这种容器的实现即为消息队列。

  • 二、消息队列的应用场景

    消息队列在实际应用中的主要场景包括:

  • 异步处理

    例如用户注册后发送注册邮件和短信。传统方法是串行或并行处理,存在性能瓶颈。引入消息队列后,注册信息写入数据库后即可返回用户接收结果,短信和邮件通过消息队列进行异步处理,显著提升系统吞吐量。

  • 应用解耦

    例如订单系统通知库存系统。传统做法是订单系统直接调用库存系统接口,存在耦合问题。引入消息队列后,订单系统将消息写入队列,库存系统通过订阅队列进行处理,实现解耦。

  • 流量削锋

    例如秒杀活动。消息队列用于控制活动人数,缓解高流量压垮服务器的问题。用户请求首写入消息队列,队列限制最大数量,超出则直接处理或跳转错误页面。

  • 日志处理

    例如Kafka处理日志。日志采集客户端将日志数据写入Kafka队列,Kafka负责存储和转发,日志处理应用订阅消费。


  • 三、消息模式

    消息队列有两种主要模式:

  • 点对点模式

    包含消息队列、发送者和接收者。消息发送到特定队列,接收者从队列获取。特点:

    • 每个消息只有一次消费。
    • 发送与接收无时间依赖。
    • 接收者需回应成功。
  • 发布订阅模式

    包含主题、发布者和订阅者。多个发布者发送消息至主题,消息被多个订阅者接收。特点:

    • 每个消息可有多个消费者。
    • 订阅者需持续运行,或可持久化订阅以避免时间依赖。

  • 四、技术案例

    1. 异步处理优化

    传统串行方式导致150ms响应时间,吞吐量仅7QPS。引入消息队列后,响应时间降至50ms,吞吐量提升至20QPS。

    2. 应用解耦示例

    订单系统写入数据库后写入消息队列,库存系统通过拉取或推送方式处理消息,实现系统解耦。

    3. Kafka日志处理

    采集客户端写入Kafka队列,Kafka存储和转发,处理应用消费处理日志数据。结合Logstash和Elasticsearch,实现高效日志分析。


    通过以上内容可以看出,消息队列技术在系统设计中的重要性。选择合适的消息模式和场景,能够显著提升系统性能和可靠性。

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

    你可能感兴趣的文章
    Nginx 配置解析:从基础到高级应用指南
    查看>>
    nginx+php的搭建
    查看>>
    nginx+tomcat+memcached
    查看>>
    nginx+Tomcat性能监控
    查看>>
    nginx+uwsgi+django
    查看>>
    Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
    查看>>
    nginx-vts + prometheus 监控nginx
    查看>>
    Nginx下配置codeigniter框架方法
    查看>>
    Nginx之二:nginx.conf简单配置(参数详解)
    查看>>
    Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
    查看>>
    Nginx代理初探
    查看>>
    nginx代理地图服务--离线部署地图服务(地图数据篇.4)
    查看>>
    Nginx代理外网映射
    查看>>
    Nginx代理模式下 log-format 获取客户端真实IP
    查看>>
    Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
    查看>>
    Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
    查看>>
    Nginx反向代理与正向代理配置
    查看>>
    Nginx反向代理是什么意思?如何配置Nginx反向代理?
    查看>>
    nginx反向代理解决跨域问题,使本地调试更方便
    查看>>
    nginx启动脚本
    查看>>