这是本人学习的总结,主要学习资料如下
- 马士兵教育
- rocketMq官方文档
1、规避策略
所谓的高可用机制就是RocketMQ
如何让生产者尽可能地成功发送消息。
1.1、默认规避策略
规避策略只在MQ
是多主机的情况下生效。
当有多台主机,生产者第一次发送消息会向其中一台broker
发送。如果失败了第二次重试发送就会避开这个broker
选择其他的broker
。
下面是流程图。
故障延迟机制策略
默认的规避策略是长时间的规避某个broker
,但是多数实际情况只是因为当时网络不好,后续网络情况好了就应该不用规避了。
所以RocketMQ
根据阿里的经验,就做了一个发送延迟时间和规避时间的对照表。比如说,发送后550ms后才返回结果,那么在30s内就规避这个broker
。
2、消息负载均衡
2.1、生产者的负债均衡
生产者的负载均衡比较简单,在不指定queueId
的情况下每个queue
轮流发消息。
2.2、消费者的负载均衡
默认是Average,即使有多个broker
也不会可以跨broker
平均分配。
还有一种方式会刻意让broker
也平均分配。因为有些broker
会因为规避策略被规避。