Java一线互联网大厂高岗RabbitMQ终极面试宝典,让你轻松KO面试(7)
2023-04-25 来源:飞速影视
另外可以通过增加 node 数量增加 cluster的消息吞吐量的目的。cluster 本身不负责 message 的可靠性问题(该问题由 producer 通过各种机制自行解决);cluster 无法解决跨数据中心的问题(即脑裂问题)。
另外,在cluster 前使用 HAProxy 可以解决 node 的选择问题,即业务无需知道 cluster 中多个node 的 ip 地址。可以利用 HAProxy 进行失效 node 的探测,可以作负载均衡。下图为HAProxy cluster 的模型。
2、Mirrored queue 是为了解决使用 cluster 时所创建的 queue 的完整信息仅存在于单一node 上的问题,从另一个角度增加可用性。
若想正确使用该功能,需要保证:
1.consumer需要支持 Consumer Cancellation Notification 机制;
2.consumer 必须能够正确处理重复message 。Warrens 是为了解决 cluster 中 message 可能被 blackholed 的问题,即不能接受producer 不停 republish message 但 RabbitMQ server 无回应的情况。
Warrens 有两种构成方式,一种模型是两台独立的 RabbitMQ server HAProxy ,其中两个 server 的状态分别为 active 和 hot-standby 。该模型的特点为:两台 server 之间无任何数据共享和协议交互,两台 server 可以基于不同的 RabbitMQ 版本。
3、Warrens 模型存在的问题:
对于第一种模型,虽然理论上讲不会丢失消息,但若在该模型上使用持久化机制,就会出现这样一种情况,即若作为 active 的 server 异常后,持久化在该 server 上的消息将暂时无法被 consume ,因为此时该 queue 将无法在作为 hotstandby 的 server 上被重建,所以,只能等到异常的 active server 恢复后,才能从其上的queue 中获取相应的 message 进行处理。
而对于业务来说,需要具有:
a.感知 AMQP 连接断开后重建各种 fabric 的能力;
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号