RocketMQ实战疑问和原理解答(更新至Q9)

news/2024/11/23 4:14:52/

Q1:怎么解决remote too much exception的问题呢?

A:主要是的客户端发送的TPS太高,达到了broker的瓶颈。

Q2: broker无法写入store.log的日志报错,报异常如下:

2018-12-17 14:09:37 WARN StoreScheduledThread1 - disk space will be full soon, but delete file failed.
2018-12-17 14:09:42 WARN SendMessageThread_1 - message store is not writeable, so putMessage is forbidden 16
2018-12-17 14:09:47 INFO StoreScheduledThread1 - physic disk maybe full soon, so reclaim space, 0.9246850495308918

R:物理文件不能无限制的写入磁盘,当磁盘空间达到阈值时,不再接受消息,broker打印出日志,消息发送失败。

A:扩容 或者根据业务缩短commitlog在磁盘的保存时间。或者调大diskMaxUsedSpaceRatio = 75的默认值到90。

Q3:如果在多topic下,并发对多个partition文件写入,相当于随机io,所以性能不好,那rocketmq也会对多个consumerqueue写入,为什么就不会出现性能问题?

A:kafka与rocketmq的存储区别在于:kafka是每个topic下会对应好几个.log文件;而rocketmq则是将所有的topic消息都写在了一个commitlog里。当topic很多时,kafka下的.log文件就会很多,而commitlog数量则不会受到影响(受影响的是consumequeue,但是consumequeue文件大小很小,基本上都是在内存里,不需要访问磁盘)。

在topic很少时,kafka是顺序读,rocketmq是随机读,但是rocketmq基于os的pagecache,所以性能不会慢于顺序读。
在topic很多时,kafka文件很多,就变成了随机读,性能会下降。rocketmq依然不受影响。

kafka内存不足时会将已经缓存的数据swap到磁盘,同时再从磁盘读取新数据。增加了磁盘IO,性能就降低了。
但是rocketmq 会尽可能利用OS的磁盘IO调度算法(NOOP)以及PageCache,尽可能的减少磁盘IO。

Q4:中通使用rocketmq的消息 落盘方式,以及主从同步方式,是sync还是async呢?还是说根据场景不同的集群选择 不同的组合?

A: 中通目前采用异步刷盘方式,不保证消息不丢失,由应用去重新发送;对于特殊业务要起高的集群,会采用同步刷盘的方式,保证消息不丢失;目前集群仍采用master-slave的架构,还未采用dledger集群架构;

其实如果rocketMQ真的实现exactly once,在用的时候,肯定也会把幂等逻辑加上去。设计方案的时候,一定要认为中间件是可能出问题的,而事实上,每个软件都可能出问题。

不能要求 rockemq 性能极高,又不允许数据丢失的可能,这是权衡,中间件,业务完美配合,协作。RocketMQ 创造一位大佬说的一句话,例如RocketMQ如何实现不会重复消费这个难题,他的解决方法是不解决。

Q5:如果直接使用公网的rocketmq,怎么保证数据安全?

A:  rocketmq是支持ssl的

Q6:如果在正常消费的过程中,增加或减少了topic队列数,还能够正常消费吗?会出现问题?

A:在消费过程中修改broker队列会导致消费重新进行负载,进而可能会导致有部分消息重复消费。

Q7:RocketMQ会不会出现,同一条消息并发到相同的节点进行消费,还是说可能会有两条一样的消息,但是先后消费?

A:一般不会出现同一条消息并发到相同节点进行消费,无论是集群模式还是广播模式。同一时间只会发送到一个queue,但是在消息负载的时候会有可能发生重复消费的可能性的,业务要做好幂等性的。其实只要没有不停机水平扩容的问题,一般正常情况是是不会重复消费的哈,但是是存在这种情况的,防止重复消费的问题还是要业务方自己去解决的。

Q8: RocketMQ从哪个版本开始支持了自动选择Master,即支持DLedger 集群模式?

A:从4.4.0版本开始。

Q9:RocketMQ支持queue粒度数据迁移么? 从一组broker任意迁移另外一组,比如broker坏了的情况下。

A:目前不支持,因为数据都混在 一个 commitlog 文件中,自己可以通过改造实现。


http://www.ppmy.cn/news/945177.html

相关文章

G3,是塔克和阿德巴约的热火队

这一场,是塔克和阿德巴约的热火队 G2的比赛,波斯顿人的数据如下 G3的比赛,波斯顿人的数据如下 如果说田忌赛马可以用在篮球场上,那这场堪称经典 热火和波斯顿人的第三场比赛,火队是客场作战,客场作战的热火…

阿宁前往沙城

题目 思路 显而易见我们能走过一条路后,直接将其毁灭,然后将下一条要走的路变为1,用BFS走最短路径,这样就能最快到达,但一开始我们没有走过的路可以毁灭,因此要分情况讨论。第一,至少有一条有多…

838. 推多米诺

一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立。 在开始时,我们同时把一些多米诺骨牌向左或向右推。 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。 同样地,倒向右边的多米诺骨牌也会推动竖立在其右侧…

Q9头和BNC头的区别

应该是Q9头与BNC像DB9公母头一样的一对关系.用于像示波器,信号发生器等. Q9和NBC的口径稍微有点不同,BNC的母头中间的缝隙比Q9得稍微大一些,一般示波器都是BNC的,用Q9也能插进去,但是时间长了会插坏的,另外一半头上都…

分治法解骑士巡游问题(Knight‘s Tour)

问题描述 国际象棋的棋盘为 m n m\times n mn的方格棋盘,现将“马”放在任意指定的方格中,按照“马”走棋的规则(与中国象棋规则一样,马走“日”字)将“马”进行移动。要求每个方格只能进入一次,最终使得…

Q9.9 N queens

Q: Write an algorithm to print all ways of arranging eight queens on a chess board so that none of them share the same row, column or diagonal. A: 经典的8皇后问题。DFS #include <iostream> #include <string> #include <vector> using namespa…

洛谷-P1462-通往奥格瑞玛的道路

题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士&#xff0c;他是部落的中坚力量。 有一天他醒来后发现自己居然到了联盟的主城暴风城。 在被众多联盟的士兵攻击后&#xff0c;他决定逃回自己的家乡奥格瑞玛。 题目描述 在艾泽拉斯&#xff0c;有 n 个城市。编号为 …

猛兽之地服务器维护,猛兽之地Roguelands全材料获取途径详解

以下就是小编为大家带来的猛兽之地Roguelands全材料获取途径详解&#xff1a; 蘑菇镇主要产出&#xff1a; 发光蘑菇 屎壳螂 少量怪兽抓 古老废墟主要产出&#xff1a; 甲壳碎片 辛辣种子 星空岩 折磨大陆主要产出&#xff1a; 星之果 少量星空岩 少量怪兽爪 少量甲壳碎片 少量…