当前位置: 首页 > news >正文

Java学习-----消息队列

        消息队列是分布式系统中重要的组件之一。使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。

        使用消息队列主要有三点好处:
(1)通过异步处理提高系统性能(减少响应所需时间):用户提交请求后,服务器将其发送到消息队列后直接就给出响应,相较于传统的服务器收到请求后,对数据库进行处理,得到结果再响应这个流程,消息队列通过处理和响应的分离,大大提高了系统性能。
(2)削峰/限流:先将短时间高并发产生的事务消息存储在消息队列中,然后后端服务再慢慢根据自己的能力去消费这些消息,这样就避免直接把后端服务打垮掉。
(3)降低系统耦合性:一个模块将信息放入消息队列中,其他模块再来消息队列中取走需要的信息,可以减少模块之间的依赖,大大降低耦合性。

        消息队列主要采用两种方式:发布-订阅模式和点对点模式。如果把消息的提供者视为生产者,使用消息的部分视为消费者,那么这两个模式中,前者是一个生产者把生产的消息发布到消息队列中,多个消费者订阅消息;后者是一个生产者专门给一个消费者生产消息。

        虽然消息队列好处多多,但也有一些显而易见的缺点:

        系统可用性降低: 系统可用性在某种程度上降低,引入后,程序员需要额外考虑消息在传输中丢失的可能
系统复杂性提高: 加入消息队列后之后,程序员需要保证消息没有被重复消费、处理消息丢失的情况、保证消息传递的顺序性等等问题
一致性问题: 消息队列可以实现异步,消息队列带来的异步确实可以提高系统响应速度。但是这也会导致出现消息队列会出现内容不一致的情况。

        常见的消息队列主要有:ActiveMQ、RabbitMQ、RocketMQ、Kafka,其差异如下:

对比方向概要
吞吐量万级的 ActiveMQ 和 RabbitMQ 的吞吐量(ActiveMQ 的性能最差)要比 十万级甚至是百万级的 RocketMQ 和 Kafka 低一个数量级。
可用性都可以实现高可用。ActiveMQ 和 RabbitMQ 都是基于主从架构实现高可用性。RocketMQ 基于分布式架构。 kafka 也是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
时效性RabbitMQ 基于erlang开发,所以并发能力很强,性能极其好,延时很低,达到微秒级。其他三个都是 ms 级。
功能支持除了 Kafka,其他三个功能都较为完备。 Kafka 功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用,是事实上的标准
消息丢失ActiveMQ 和 RabbitMQ 丢失的可能性非常低, RocketMQ 和 Kafka 理论上不会丢失。
http://www.lryc.cn/news/591262.html

相关文章:

  • 3.2 函数参数与返回值
  • 通过轮询方式使用LoRa DTU有什么缺点?
  • Stone3D教程:免编码制作在线家居生活用品展示应用
  • Spring,Spring Boot 和 Spring MVC 的关系以及区别
  • WSL2 离线安装流程
  • 元宇宙与Web3的深度融合:构建沉浸式数字体验的愿景与挑战
  • 手写Promise.all
  • C#中的LINQ解析
  • Level-MC 5”雪原“
  • 探微“元宇宙”:概念内涵、形态发展与演变机理
  • MTK平台--如何查询手机连接的TX速率和带宽
  • 【PY32】使用轩微烧录器烧录PY32微控制器
  • 跨域通信inframe高级
  • Nginx/OpenResty HTTP 请求处理阶段与 Lua 实践全解20250717
  • Java中的字符串——String,StringBuilder,StringBuffer
  • 基于邻域统计分析的点云去噪方法
  • 【测试100问】没有接口文档的情况下,如何做接口测试?
  • TC500R立式加工中心主轴箱机械结构设计cad【11张】三维图+设计说明书
  • 【后端】.NET Core API框架搭建(7) --配置使用Redis
  • Android本地浏览PDF(Android PDF.js 简要学习手册)
  • React hooks——useReducer
  • 面试Redis篇-深入理解Redis缓存穿透
  • 基于YOLOv11的水面垃圾智能检测系统
  • halcon 模板匹配
  • 高精度加法模版介绍
  • 阿里云-通义灵码:隐私保护机制—为数据安全筑起铜墙铁壁
  • USRP中心频率与采样率联合设置
  • MyBatis 之配置与映射核心要点解析
  • CPU架构、三级缓存以及内存优化屏障
  • 指针数组和数组指针的应用案例