RocketMq灰皮书(一)------选型&RocketMQ名词
RocketMq灰皮书(一)------选型&RocketMQ名词
一. MQ选型对比
目前业内常用的MQ框架有一下几种:
- Kafka
- RabbitMQ
- RocketMQ
除此之外,还有ActiveMQ等,但是ActiveMQ目前使用已经很少了,在一些老项目中可能还能看到,因此在这里不做赘述.
(1) Kafka
优点:
高吞吐量
在常规机器下,使用Kafka,一台机器可以达到每秒十几万的QPS.
高性能
消息发送性能很高,达到毫秒级别.
高可用
支持集群部署,部分机器宕机依然可以正常使用
缺点:
数据丢失
Kafka收到数据会写入磁盘缓冲区,并没有直接落地到物理磁盘,如果此时机器本身故障宕机,可能会导致缓冲区的数据丢失.
功能单一
主要支持
发送消息和消费消息,没有额外的功能.
适用场景:
业内一般适用Kafka来进行用户行为日志的采集和传输.
(2) RabbitMQ
优点:
数据不丢失
高可用
拥有高级功能
支持
死信队列、消息重试
缺点:
吞吐量低
每秒几万的QPS,在并发比较高的情况下比较困难.
集群扩展比较麻烦
使用
erlang开发,二次开发比较困难
使用场景:
一般小型的公司,吞吐量并不高的系统中还在使用,基本上满足项目需求即可.
(3) RocketMQ
优点:
高吞吐量
单机可达10万QPS
高可用
支持集群部署
可以通过配置保证数据不丢失
支持高级功能
如
延迟消息、事务消息、死信队列、消息回溯基于
java开发,符合国内很多公司的技术栈,可以很方便的进行二次开发
缺点:
- 官方文档不够详细,比前面两款略有不足
使用场景:
在大公司中,日常的项目需求,一般都使用比较频繁.
二. RocketMQ中的概念介绍
在详细了解RocketMq之前,有必要先对它涉及的所有相关的概念有所了解,这样在后面使用的时候就能有个初步的印象.
我们用一个简单的流程来介绍,一般来说,我们使用MQ的流程是这样的:
- 有2个微服务A和B,然后运维部署好MQ
- A服务发送消息到MQ
- B服务从MQ获取消息,处理逻辑
以上步骤如图:

站在上帝视角,服务A和服务B都是在利用MQ传递消息,即可以说:(1)服务A生产消息,服务B消费消息;(2)RocketMq只是临时持有消息,类似数据库,看到这里,我们已经发现在这个流程中,有两个比较重要的概念了.
Producer
消息生产者,即上图中的服务A
Consumer
消息消费者,即上图中的服务B
Message
代表一条消息,由producer产生,由consumer消费
Broker
每台机器上部署的RocketMq一般称为Broker,每个Broker会收到不同的消息,consumer会从Broker上获取消息.
通过简单的一个消息发送的图示,我们得到了RocketMq中的四个比较重要的概念,不过既然本系列博文取名灰皮书,仅仅到此是不够的,接下来我们思考几个问题.
- 服务A要发送消息到MQ,它具体是怎么实现的?
- 服务B要消费MQ的消息,它又是怎么拿到这些消息的?
Broker自己要保存消息,以供服务B来获取,那么它是怎么存储的呢?RocketMQ高吞吐,且可以集群部署,支持HA,这些又是如何实现的?
以上这些问题,将会在下一篇博文中逐步探索,力求对Rocket的使用和原理都有一定的认识.
总结
写到这里,其实我们只是初步了解了业界使用的MQ的优劣对比,了解了RocketMq中存在的四个概念.探究学识,由浅入深,只有对这些基本的东西理解透彻,才能更进一步.
个人公众号<橙耘自留地>日前已经开通,后续博主发布的文章都会一并更新到公众号,如有需要,自行查阅.
关于橙耘自留地,是我个人聚焦互联网技术栈学习分享的一个平台,创立之初是因为目前业内各种技术课程资料层次不齐,褒贬不一,有时候一门课花费高价买入,其实内含草包,有时偶尔低价得之,却又大有干货.因此我会根据大家的意见和评价,选择不同的技术栈去学习,一为提升我自己的技术,二为大家梳理出质量比较好的课程,以作参考.同时,相关的学习心得也会一并更新到博客和公众号.

RocketMq灰皮书(一)------选型&RocketMQ名词的更多相关文章
- RocketMq灰皮书(三)------MQ使用
RocketMq灰皮书(三)------MQ使用 在使用MQ之前,我们回顾一下前两篇博文的内容. 我们大致了解了RocketMQ的四个概念,分别是:Producer,Consumer,Message和 ...
- RocketMq灰皮书(二)------本地部署启动MQ
RocketMq灰皮书(二)------本地部署启动MQ Windows10本地部署RocketMQ 在上一篇文章中,我们对rocket的几个基本概念进行了介绍,也了解了业内几大消息中间件的区别.在本 ...
- rocketMq排坑:如何设置rocketMq broker的ip地址
在工作中遇到了一个这个问题,就是我们rocketmq是部署在云主机上的 但是我们的开发同事在自己的电脑连接rocketmq链接不上 报错显示Caused by: org.apache.rocketmq ...
- RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群
1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全 ...
- RocketMQ学习笔记(15)----RocketMQ的消息模式
在前面学习ActiveMQ时,看到ActiveMQ可以是队列消息模式,也可以是订阅发布模式. 同样,在RocketMQ中,也存在两种消息模式,即是集群消费模式和广播消费模式. 1. 集群消费模式 跟A ...
- RocketMQ学习笔记(13)----RocketMQ的Consumer消息重试
1. 概念 Producer端重试: 生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败. 这种消息失败重试我们可以手动设置发送失败重试的次 ...
- RocketMQ学习笔记(14)----RocketMQ的去重策略
1. Exactly Only Once (1). 发送消息阶段,不允许发送重复的消息 (2). 消费消息阶段,不允许消费重复的消息. 只有以上两个条件都满足情况下,才能认为消息是“Exactly O ...
- RocketMQ学习笔记(4)----RocketMQ搭建双Master集群
前面已经学习了RockeMQ的四种集群方式,接下来就来搭建一个双Master(2m)的集群环境. 1. 双Master服务器环境 序号 ip 用户名 密码 角色 模式 (1) 47.105.145.1 ...
- RocketMQ(2)---Docker集群部署RocketMQ
RocketMQ(2)-Docker集群部署RocketMQ =前言= 1.因为自己只买了一台阿里云服务器,所以RocketMQ集群都部署在单台服务器上只是端口不同,如果实际开发,可以分别部署在多台服 ...
随机推荐
- 输入DStream之基础数据源以及基于HDFS的实时wordcount程序
输入DStream之基础数据源以及基于HDFS的实时wordcount程序 一.Java方式 二.Scala方式 基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实 ...
- Pytest(16)随机执行测试用例pytest-random-order
前言 通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果. pytest默认运行用例的顺序是按模块和用例命名的 ASCII 编码 ...
- Pytest(4)失败重跑插件pytest-rerunfailures
安装: pip3 install pytest-rerunfailures 重新运行所有失败用例 要重新运行所有测试失败的用例,请使用--reruns命令行选项,并指定要运行测试的最大次数: $ py ...
- Qt update刷新之源码分析(一)
在做GUI开发时,要让控件刷新,会调用update函数:那么在调用了update函数后,Qt究竟基于什么原理.执行了什么代码使得屏幕上有变化?本文就带大家来探究探究其内部源码. Qt手册中关于QWid ...
- Mybatis学习笔记1
mybatis是一个orm持久化框架,mybatis专注于sql的操作从3.0开始名字改变了:ibatis-mybatis 对象关系映射(Object Relational Mapping) 一.My ...
- [OpenCV]获取摄像头视频
环境:Windows 8 64bit + VS2012 X64 + OpenCV 2.4.7 摄像头的捕捉使用VideoCapture类 Class VideoCapture [OpenCV文档 ...
- 【noi 2.6_1481】Maximum sum(DP)
题意:求不重叠的2段连续和的最大值. 状态定义f[i]为必选a[i]的最大连续和,mxu[i],mxv[i]分别为前缀和后缀的最大连续和. 注意:初始化f[]为0,而max值为-INF.要看好数据范围 ...
- poj3083 Children of the Candy Cor
Description The cornfield maze is a popular Halloween treat. Visitors are shown the entrance and mus ...
- Codeforces Round #481 (Div. 3) C. Letters (模拟,二分)
题意:有个\(n\)个公寓,每个公寓\(a_{i}\)代表着编号为\(1-a_{i}\)个房间,给你房间号,问它在第几栋公寓的第几个房间. 题解:对每个公寓的房间号记一个前缀和,二分查找属于第几个公寓 ...
- L3-007 天梯地图 (30分) 最短路+dp
最短路+dp思路:nuoyanli 520 Let's play computer game 输入样例1: 10 15 0 1 0 1 1 8 0 0 1 1 4 8 1 1 1 5 4 0 2 3 ...