分布式消息中间件概述
目前常用的消息中间件有RabbitMQ、RocketMQ、Kafka等,本篇博客不涉及任何任何消息中间件,只是简单的介绍消息中间件一些概念和解决方案。消息中间件的本质是两个进程之间的通讯,像HTTP、RPC、Webservice都可以进行进程间通讯,那么我们为什么还需要消息中间件这个组件呢?
我们考虑一个场景,假如有一个交易系统,交易成功之后需要发送短信通知,如果交易耗时100毫秒,发送短信需要200毫秒,如果使用HTTP则整个交易流程需要300毫秒,而对于短信的实时性并不是那么强,这个时候我们可以将短信放到消息队列,然后在发送。这就是消息中间件的一个典型的场景。相对于HTTP和RPC的实时性通讯,消息通讯降低了系统之间的耦合度,可以提高系统之间的处理能力。
下面我们会介绍消息中间件的几种常用的场景,包括订阅发布、削峰填谷、异步解耦、顺序收发,日志收集等。
削峰填谷:诸如秒杀、红包等大型活动皆会带来比较高的流量高峰,很可能会导致系统超负荷甚至崩溃、或者因限制请求数而导致请求大量失败影响用户体验,消息中间件可以实现削峰填谷的服务来解决这些问题。
异步解耦:一般交易系统作为核心系统,每笔交易订单数据会引起几十上百个下游业务的关注,比如积分、计算分析等、消息中间件可以实现异步解耦,确保核心业务的连续
顺序收发:顺序消息的使用非常多,比如订单创建、支付、退款等都必须按照顺序处理,很多消息中渐渐都能够保证消息的顺序性,即符合FIFO原理。
分布式一致性:分布式、微服务都要保证事务的一致性。消息中间件的使用可以使得应用之间既能解耦又能保证事务的一致性。
消息中间件的使用还有很多,不同的消息中间件都有不同的特性,但总的来说最基本得到组件包括生产者、消息和消费者。生产者用于生产消息,会将消息发送到消息中间件服务器,消费者会主动拉取需要消息或者消息中间件推送消费者订阅的消息给消费者。如下为消息中间件的消息传递流程:
这里我们不具体的介绍生产者。消费者和消息,因为不同的消息中间件会有不同的实现。后续我们会详细介绍RocketMQ、RabbitMQ和Kafka的使用。如下为常用的中间件的对比:
分布式消息中间件概述相关推荐
- 分布式事务概述 (资料)
2019独角兽企业重金招聘Python工程师标准>>> 什么是分布式系统 分布式系统是由一组通过网络进行通信.为了完成共同的任务而协调工作的计算机节点组成的系统.分布式系统的出现是为 ...
- 分布式消息中间件设计
目录 1.什么是分布式消息中间件 1.1.单体架构 1.2.分布式系统架构 2.基于消息中间件的分布式系统架构 2.1.什么是消息中间件 2.2消息中间件概述 3.消息中间件的核心设计 3.1.本质 ...
- 深入理解阿里分布式消息中间件
什么是分布式消息中间件 什么是分布式消息中间件? 对于分布式消息中间件,首先要了解两个基础的概念,即什么是分布式系统,什么又是中间件. 分布式系统: "A distributed syste ...
- 深度神经网络的分布式训练概述:常用方法和技巧全面总结
论文地址:https://arxiv.org/abs/1810.11787 深度学习已经为人工智能领域带来了巨大的发展进步.但是,必须说明训练深度学习模型需要显著大量的计算.在一台具有一个现代 GPU ...
- 分布式消息中间件 : Rocketmq
简述 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 分布式消息中间件,主要是实现分布式系统中解耦.异步消息.流量销锋.日志处理等场景.生产中用的最 ...
- 分布式消息中间件中的一些概念(接上一篇的《什么是分布式消息中间件?》)...
接上一篇的<什么是分布式消息中间件?>,这一篇来介绍一下消息中间件相关的一些概念和专业术语. Topic 主题,从逻辑上讲一个Topic就是一个Queue,即一个队列:从存储上讲,一个To ...
- spring+springmvc+kafka分布式消息中间件集成方案
Honghu的消息服务平台已经抛弃了之前的ActiveMQ,改用高吞吐量比较大的Kafka分布式消息中间件方案: kafka消息平台使用spring+kafka的集成方案,详情如下: 1. 使用最高版 ...
- 基于RabbitMQ消息队列的分布式事务解决方案 - MQ分布式消息中间件实战
基于RabbitMQ消息队列的分布式事务解决方案 - MQ分布式消息中间件实战 参考文章: (1)基于RabbitMQ消息队列的分布式事务解决方案 - MQ分布式消息中间件实战 (2)https:// ...
- TubeMQ 万亿级分布式消息中间件
TubeMQ是腾讯在2013年自研的分布式消息中间件系统,专注服务大数据场景下海量数据的高性能存储和传输,经过近7年上万亿的海量数据沉淀,目前日均接入量超过25万亿条.较之于众多明星的开源MQ组件,T ...
最新文章
- Matlab与线性代数 -- 矩阵的秩
- 计算机书籍-Exploring Cloud Computing免费电子书
- Mac OSX操作系统安装和配置Zend Server 6教程(1)
- excle快捷键(持续更新中)
- Scrapy 调用chrome浏览器的middleware
- C++设计模式详解之抽象工厂模式解析
- js JQuery 获取元素和遍历
- Qt基础-QTreeView简单demo、视图模型、坐标位置对应关系介绍等
- Java上传文件格式判断
- Android对话框集合
- JDBC的PreparedStatement接口
- 阿里巴巴2015实习面试
- 利用 pdf.js 实现在前端预览 .pdf 文件
- 2023年最新微信小程序获取用户openid、头像昵称的填写能力和方法原生写法
- Android自定义View实现方位刻度尺(类似于吃鸡手游)
- 武汉有哪些大学 计算机专业比较强,武汉有哪些计算机好的大学排名
- K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路
- 计算机学报——主题“区块链”,检索到25篇
- 讯飞离线语音合成接入
- 从VirtualDom(虚拟Dom)到真实DOM
热门文章
- 图集中子图坐标轴刻度、标签、图例的设置
- php调用java本地jar包(sm2)
- javascript之键盘事件onkeydown,onkeyup,onkeypress
- 贵州省冬季冰雪运动旅游季系列活动在六盘水举行
- CAD转Word该如何转换呢?
- 微商怎么利用微信群做营销
- 请问怎样在亚马逊美国站卖东西?怎样收款?接到单打什么快递?请问亚马逊卖家开店具体怎样操作?
- 工业互联网2022:第一梯队成型、专精玩家突围
- 已解决:未找到文件:\product\11.2.0\dbhome_2\owb\external\oc4j_applications\applications\WFMLRSVCApp.ear
- utorrent 在ubuntu上怎么使用