了解消息中间件的基础知识

2023-09-13 10:13:49

为什么要使用消息中间件?

  1. 解耦:消息中间件可以使不同的应用程序通过解耦的方式进行通信,减少系统间的依赖关系
  2. 提供异步通信:消息中间件可以实现异步消息传递,提高系统的响应性能。
  3. 流量削峰:消息中间件可以起到流量削峰的作用,将短时间内的爆发式流量存储在消息队列中,使系统能够平稳地处理请求
  4. 解决分布式系统数据传输的需求:如分布式场景下的websocket支持。

消息中间件的缺点

  1. 降低系统可用性: 如果消息中间件出现故障或挂掉,那么使用它的应用程序也会受到影响,导致系统整体可用性降低。
  2. 降低系统稳定性: 网络故障可能会导致消息丢失(主要发生在RabbitMQ),消息重复,甚至出现脏数据,影响系统的稳定性。
  3. 引入分布式一致性问题: 在分布式系统中,各个节点之间通信可能会出现延迟,导致数据在各个节点之间不一致。
  4. 提高系统复杂性: 引入消息中间件后,系统需要考虑的问题会增多,例如消息的顺序性、消息的可靠性、消息的持久性等,这会增加系统的复杂性。

常用的MQ对别

在这里插入图片描述
对别总结:

  • ActiveMQ:非常成熟,功能强大,在业内大量的公司以及项目中都有应用偶尔会有较低概率丢失消息而且现在社区以及国内应用都越来越少,官方社区现维护越来越少,几个月才发布一个版本而且确实主要是基于解耦和异步来用的,较少在大规模吞吐的场景中使用。
  • RabbitMq:erlang语言开发,性能极其好,延时很低;吞吐量到万级,MQ功能比较完备而且开源提供的管理界面非常棒,用起来很好用社区相对比较活跃,几乎每个月都发布几个版本分在国内一些互联网公司近几年用rabbitmq也比较多一些但是问题也是显而易见的,RabbitMQ确实吞吐量会低一些,这是因为他做的实现机制比较重。而且erlang开发,国内有几个公司有实力做erlang源码级别的研究和定制?如果说你没这个实力的话,确实偶尔会有一些问题,你很难去看懂源码,你公司对这个东西的掌控很弱,基本职能依赖于开源社区的快速维护和修复bug。而且rabbitmq集群动态扩展会很麻烦。其实主要是erlang语言本身带来的问题。很难读源码,很难定制和掌控。
  • RocketMQ:接口简单易用,而且毕竟在阿里大规模应用过,有阿里品牌保障日处理消息上百亿之多,可以做到大规模吞吐,性能也非常好,分布式扩展也很方便,社区维护还可以,可靠性和可用性都是ok的,还可以支撑大规模的topic数量,支持复杂MQ业务场景而且一个很大的优势在于,阿里出品都是java系的,我们可以自己阅读源码,定制自己公司的MQ,可以掌控,社区活跃度相对较为一般,不过也还可以,文档相对来说简单一些,然后接口这块不是按照标准JMS规范走的,有些系统要迁移需要修改大量代码,还有就是阿里出台的技术,你得做好这个技术万一被抛弃,社区黄掉的风险,那如果你们公司有技术实力我觉得用RocketMQ挺好的.
  • Kafka:kafka的特点其实很明显,就是仅仅提供较少的核心功能,但是提供超高的吞吐量,ms级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展同时kafka最好是支撑较少的topic数量即可,保证其超高吞吐量而且kafka唯一的一点劣势是有可能消息重复消费,那么对数据准确性会造成极其轻微的影响,在大数据领域中以及日志采集中,这点轻微影响可以忽略这个特性天然适合大数据实时计算以及日志收集。
更多推荐

【窗体】Winform两个窗体之间通过委托事件进行值传递,基础篇

2023年,第38周。给自己一个目标,然后坚持总会有收货,不信你试试!在实际项目中,我们可能会用到一些窗体做一些小工具或者小功能。比如:运行程序,在主窗体A基础上,点击某个按钮希望能够弹出B窗体,在B窗体完成操作后,希望能够把值传递回到A窗体,然后进行其他业务操作。目录一、显示线上图片二、显示本地图片三、A窗体打开B窗

西瓜书读书笔记整理(六)—— 第六章 支持向量机

第六章支持向量机6.1间隔与支持向量6.1.1什么是支持向量机6.1.2支持向量与间隔6.1.3支持向量机的求解过程6.2对偶问题(dualproblem)6.2.1什么是对偶问题6.2.2如何求解支持向量机的对偶问题6.3核函数(kernelfunction)6.3.1什么是支持向量机的核函数6.3.2常见的几种核函

[NLP] LLM---<训练中文LLama2(五)>对SFT后的LLama2进行DPO训练

当前关于LLM的共识大型语言模型(LLM)使NLP中微调模型的过程变得更加复杂。最初,当ChatGPT等模型首次出现时,最主要的方法是先训练奖励模型,然后优化LLM策略。从人类反馈中强化学习(RLHF)极大地推动了NLP的发展,并将NLP中许多长期面临的挑战抛在了一边。基于人类反馈的强化学习(Reinforcement

算法通关村-----数组中元素出现次数问题

数组中出现次数超过一半的数字问题描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。详见剑指offer39问题分析最直接的方式就是使用hashMap,遍历给定数组,将数字和对应出现次数存储在hashMap中,然后再遍历hashMap,找到出现次数最大

代码随想录算法训练营第三十八天|理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

理论基础无论大家之前对动态规划学到什么程度,一定要先看我讲的动态规划理论基础。如果没做过动态规划的题目,看我讲的理论基础,会有感觉是不是简单题想复杂了?其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!如果做过动态规划题目的录友,看我的理论基础就会感同身受了。代码随想录视频:从此再也不怕动态规划了

第二篇------Virtual I/O Device (VIRTIO) Version 1.1

上篇文章:https://blog.csdn.net/Phoenix_zxk/article/details/132917657篇幅太大,所以分开写,接下来续上4.3.3.2.1设备要求:Guest->Host通知设备必须忽略GPR2的位0-31(从左边数)。这样可以使子通道ID的传递方式与现有的I/O指令传递方式保持

计算机等级考试信息安全三级填空题-二

1.信息安全的五个根本属性是:机密性、完整性可控性、不可否认性和完整性。2.在Windows系统中,查看当前已经启动的效劳列表的命令是:netstart3.在数据库中,删除表的命令是:DROP4.在信息资产治理中,标准信息系统的因特网组件包括:效劳器、网络设备和保护设备。5.在信息资产治理中,标准信息系统的组成局部包括

开源教育对话大模型 EduChat

文章目录一、🚀前言二、🤖本地部署三、👨‍💻使用示例四、🔎总结🍉CSDN叶庭云:https://yetingyun.blog.csdn.net/一、🚀前言教育是一项对人类身心发展产生影响的社会实践活动,旨在从内在激发人们固有或潜在的素质。因此,我们必须坚持以人为本的教育理念,重点关注个性化、引导式和身心全面

拓世科技集团到访考察吉安青原区:共谋AIGC数字经济产业园发展大计

千帆竞发立潮头,奋勇争先谋发展,在中国这片广袤的大地上,先行者的每一次拓进都是历史的华章,远谋者的每一次交汇都是未来的预言。当红色江西大地与现代科技脉搏共振,当青原区的绿意拥抱拓世科技的AIGC科技,一场关于科技与地区发展的交响曲就此奏响。在这个充满变革与机遇的时代,拓世科技集团与吉安青原区政府携手共谋AIGC产业布局

计算机毕业设计 高校普法系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟————————————————计算机毕业设计题目《10

深眸科技自研工业AI视觉检测设备,检测精度99.9%加速智造进程

随着机器视觉技术的持续升级,国内制造行业不断发展,工艺水平持续优化,产品的数量和种类与日俱增。当前社会将产品质量标准提高,在满足正常的性能使用外,还需要具有良好的表面外观质量。但在工业制造过程中,受到产品工艺、生产设备、现场环境等因素的影响,制造产品表面往往存在各种各样的缺陷,包括裂纹、堵孔、凹凸、破损等。这些表面缺陷

热文推荐