【消息队列的功能介绍】

分布式消息队列可以提供应用解耦、流量削峰、消息分发、保证最终一致性、方便动态扩容等功能。

【MQ使用场景1——应用解耦】

  复杂的系统如电商系统,会存在多个子系统,如订单系统、库存系统、物流系统、支付系统。如果各个子系统之间耦合性太强,会导致整体系统的可用性大幅降低,多个低错误率的子系统强耦合,会得到一个高错误率的整体系统。

  用户创建订单后,如果耦合地调用库存系统、物流系统、支付系统,任何一个子系统出现故障不可用,都会造成下单操作异常,影响用户体验。

[ 举例——通过MQ解耦应用,提高系统的可用性和稳定性 ]

  基于消息队列的方式后,解耦各个应用,能提高系统的可用性。如果物流系统发生故障,需要几分钟来修复,在这几分钟里,物流系统需要被处理的订单信息内容缓存在消息队列中,用户下单可以正常完成,当物流系统恢复后,补充处理存储在队列的订单信息即可,用户感知不到物流系统发生过的几分钟故障。

【MQ使用场景2——流量削峰】

  秒杀活动,大部分的应用系统流量会瞬间猛增,这个时候没有缓冲机制,系统要承受短时的大流量冲击,通过消息队列,可以把大量的请求缓存起来,让系统合理处理这些请求,虽然系统的处理时间增长了,但是能大大提高系统的稳定性和用户体验。

[ 举例——流量削峰提高系统的可用性 ]

  比如,如果订单系统每秒最多处理1W次下单,在秒杀活动时,可能短时间内,每秒有10W请求,为了保证系统的稳定性:

不加消息队列:

  订单超过1W次,就不允许用户下单了。

加了消息队列:

  可以取消1W这个限制,把请求缓存在消息队列中,系统提高时长来处理,有的用户请求可能会在下单十几秒后才会收到下单成功的状态,但是也比不能下单要好。

[ 小结 ]

  使用消息队列进行流量削峰,很多使用是出于经济考虑。有的业务系统,流量最高峰QPS也不会超过1W的QPS,而平时只有1K左右的QPS,这种情况,可以考虑使用一个普通性能的服务器(只需支持1K左右的QPS),然后加个消息队列作为高峰请求的缓冲,这样可以节省很多资金。

【MQ使用场景3——消息分发】

  在大数据这块,数据的产生方会把各自的数据写入一个消息队列即可,数据的使用方根据各自的需求订阅感兴趣的数据,不同的数据团队所订阅的数据可以重复也可以不重复,互不干扰,也不必和数据产生方关联。

[ 举例——消息分发 ]

  各个子系统将日志文件不停写入消息队列,不同的数据处理系统有各自的Offset,互不影响。甚至某个团队处理完的结果也可以写入消息队列,作为数据的产生方,供其他团队使用,避免重复计算。

【RocketMQ的基本指令】

【1.启动消息队列】

启动NameServer

nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/
namesrv.log
提示:
The Name Server boot success...

启动Broker

nohup sh bin/mqbroker -n localhost:&
tail -f ~/logs/rocketmqLogs/broker.log
提示:
The broker[%s, 192.168.0.233:10911] boot success...

【2.关闭消息队列】

关闭 NameServer

sh bin/mqshutdown broker
提示:
The mqbroker(36695) is running...
send shutdown request to mqbroker(36695) OK

关闭 Broker

sh bin/mqshutdown namesrv
提示:
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

【用命令行发送和接受消息】

RocketMQ读书笔记1——简述的更多相关文章

  1. RocketMQ读书笔记5——消息队列的核心机制

    [Broker简述] Broker是RocketMQ的核心,大部分“重量级”的工作都是由Broker完成的,包括: 1.接受Producer发过来的消息: 2.处理Consumer的消费信息请求: 3 ...

  2. RocketMQ读书笔记4——NameServer(MQ的协调者)

    [NameServer简述] 对于一个消息队列集群来说,系统由很多机器组成,每个机器的角色.IP地址都不相同,而且这些信息是变动的(如在某些情况下,会有新的Producer或Consumer加入). ...

  3. RocketMQ读书笔记7——吞吐量优先的场景

    [Broker端进行消息过滤] 在Broker端进行消息过滤,可以减少无效消息发送到Consumer,少占用网络宽带从而提高吞吐量. [过滤方式1——通过Tag过滤] [ 关于Tag和Key ] 对一 ...

  4. RocketMQ读书笔记6——可靠性优先的使用场景

    [顺序消息] 顺序消费是指消息的产生顺序和消费顺序相同. 比如订单的生成.付款.发货,这三个消息必须按顺序处理才可以. [顺序消息的分类] 全局顺序消息和部分顺序消息. 上面订单的例子,其实是部分顺序 ...

  5. RocketMQ读书笔记3——消费者

    [不同类型的消费者] DefaultMQPushConsumer 由系统控制读取操作,收到消息后自动调用传入的处理方法来处理. DefaultMQPullConsumer 读取操作中的大部分功能由使用 ...

  6. RocketMQ读书笔记2——生产者

    [生产者的不同写入策略] 生产者向消息队列里写入数据,不同的业务需要生产者采用不同的写入策略: 同步发送.异步发送.延迟发送.发送事务消息等. [DefaultMQProduce示例] public ...

  7. 《精通Spring 4.X企业应用开发实战》读书笔记1-1(IoC容器和Bean)

    很长一段时间关注在Java Web开发的方向上,提及到Jave Web开发就绕不开Spring全家桶系列,使用面向百度,谷歌的编程方法能够完成大部分的工作.但是这种不系统的了解总觉得自己的知识有所欠缺 ...

  8. 《Go并发编程实战》读书笔记-初识Go语言

    <Go并发编程实战>读书笔记-初识Go语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在讲解怎样用Go语言之前,我们先介绍Go语言的特性,基础概念和标准命令. 一. ...

  9. 深入探索Android热修复技术原理读书笔记 —— so库热修复技术

    热修复系列文章: 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍 深入探索Android热修复技术原理读书笔记 -- 代码热修复技术 深入探索Android热修复技术原理读书笔记 ...

随机推荐

  1. 【算法笔记】B1040 有几个PAT

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 ...

  2. vue 之bug<1> Warn : [vue-router] Duplicate named routes definition:

    原因:定义重复的路由名称. 我有3个不同的(父级)vue文件分别配置了3个相同的(子级)vue文件,配置路由的js文件里子集路由的name重复了. 解决方案: 一天一个小Bug

  3. js 中常见的深拷贝的方法

    建议最简单的第一种 1.通过 JSON 对象实现深拷贝 this.data = JSON.parse(JSON.stringify(this.vm.$store.state.security.menu ...

  4. 转 OGG 部署阶段常见问题

    序号 问题 解决方案1 "2019-04-13 20:23:55 ERROR OGG-00868 Oracle GoldenGate Capture for Oracle, e_db1.pr ...

  5. 高版本sonar安装遇到的坑-sonar 6.7.5

    最近安装了6.7.5版本的sonar,发现里面的坑还是很多,下面列举下遇到的坑 sonar插件地址:https://docs.sonarqube.org/display/PLUG/Plugin+Lib ...

  6. Android Watchdog

    http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/Watchdog ...

  7. JavaScript 刷题一

    最近读<JavaScirpt编程精解>,想把里面的三个大的程序实现,现在记录下来. 问题一: 从下面这封信中,emily奶奶每封信的结尾都会用同样的格式注明哪只猫出生了,哪只猫死去了.现要 ...

  8. unittest 几个重要概念

    unittest是一个python版本的junit,junit是java中的单元测试框架,unittest实现了很多junit中的概念,比如我们非常熟悉的test case, test suite等, ...

  9. 分布式集群HBase启动后某节点的HRegionServer自动消失问题

    详细问题   我这里是,我的这个slave1的HRegionServer 进程启动后,不久自动消失.           去查看日志,排查问题: 发现问题: 解决办法 [hadoop@master h ...

  10. SQL Cookbook—数字、日期

    1.计算不包含最大值和最小值的均值2.把字母数字串转换为数值3.更改累计和中的值–显示存款或取款后的值4.加减日.月.年5.计算两个日期之间的天数6.确定两个日期之间的工作日数目表EMP中,计算BLA ...