当前位置:
科技动态 > 【第350期】面试官:谈谈RabbitMQ的几种工作模式及优化建议
【第350期】面试官:谈谈RabbitMQ的几种工作模式及优化建议
May 17, 2022 4:17 pm
•
面试问题 •
阅读 6
围观者:
推荐一个好朋友
1. 组件介绍
Broker:提供传输服务。它的作用是维护一条从生产者到消费者的路由,保证数据能够按照指定的方式传输。
Exchange:消息交换,指定消息按照什么规则路由到哪个队列。
队列:消息的载体。每条消息都会被放入一个或多个队列中。
Binding:绑定,其作用是根据路由规则绑定exchange和queue。
Routing Key:路由关键字,交换机根据该关键字传递消息。
vhost:虚拟主机。一个broker中可以有多个vhost,用于区分不同用户的权限。
生产者:消息生产者是传递消息的程序。
消费者:消息消费者是接受消息的程序。
通道:消息通道。客户端的每个连接中可以建立多个通道。
2.消息发布和接收流程
1. 如何发送消息
Producer和Broker建立TCP连接
生产者和经纪人建立渠道
Producer通过Channel将消息发送给Broker,Exchange转发消息。
Exchange 将消息转发到停止丢弃的队列。
2. 如何接收消息
Consumer和Broker建立TCP连接
消费者和经纪人建立渠道
消费者监听指定的Queue(队列)
当消息到达Queue时,Broker默认会将消息推送给consumer。
消费者收到消息
3、工作模式
1、直播模式
这是最简单的模式。即在创建消息队列时,指定一个路由键(RoutingKey)。发送者发送消息时,指定对应的Key。当Key与消息队列的RoutingKey一致时,消息就会被发送。到消息队列。
2.Topic话题交换区模式
主题转发信息主要基于通配符,队列和交换机的绑定主要基于某种模式(通配符+字符串)。发送消息时,只有指定的Key与pattern匹配时才会发送消息。发送到消息队列。通配符:*代表一个单词,#代表零个或多个单词
3.fanout是路由广播的一种形式扇出是路由广播的一种形式,它将消息发送到与其绑定的所有队列。即使设置了 key,它也会被忽略。因此,我们发送到交换机的消息将被绑定到交换机的每个队列接收。消息,即使此时指定了路由键(routingKey)或规则(即上面的convertAndSend方法的参数2),也会被忽略!
4.RabbitMQ优化建议
1、增加服务器带宽
当访问量较大时,长数据很容易占满带宽。如果服务器上传带宽为10M,则实际上传带宽可以认为是1M,每秒上传量为1M/1K=1K。如果带宽增加到100M,则每秒上传量为10K。一般情况下,RabbitMq服务器每秒可以接受20K-50K写入(8G内存),所以当带宽小于200M时,增加带宽会有明显的提升效果,而且效果可能没有那么高。太明显了。
2.增加记忆力
RabbitMq的机制是先将消息放置在内存中,然后批量写入硬盘。小批量的数据基本上都写入内存中。当内存数据量过大时,客户端数据会写入内存,而内存中的旧数据会写入硬盘,严重影响速度。的损失。通过适当增加内存,队列会在内存中放置更多的消息,提高系统的处理速度。
3.使用固态硬盘
机械硬盘的写入速度较慢,在处理大量数据时,机械硬盘的性能损失非常严重。如果要存储1亿条数据,需要的硬盘大小为100G,建议使用100-500G的固态硬盘。另外,消费者端不断地处理数据,达到千万条消息需要处理也不容易。
4.增加生产者
服务器可以建立多个连接。单个生产者通常无法充分利用服务器的潜力。建立多个生产者后,服务器的处理能力将得到充分利用。正常情况下,生产者每秒可以传输1000-5000条消息。在 1-10 范围内,每增加一个生产者,处理速度将比单个生产者提高一倍。
5、增加消费者
当消费者数量增加时,队列出队速度显着提高。该方案对出队速度影响有限。在1-10道工序范围内,相比单一工序仅提高一倍左右。建议开2-5个线程,多了可能影响不大。造成这种现象的原因可能是服务器带宽或者硬件处理能力有限,加多了消费者也是没有用的。由于没有实际环境测试,本文仅是一个建议。在采用之前你可以多做一些实验。
6.将网络访问更改为本地访问当消费者/生产端和 RabbitMq 服务器部署在同一台计算机上时,该解决方案很有用,因为省略了网络传输,从而大大节省了处理时间。如果消费者/生产者与RabbitMq服务器分开部署,则无法使用此解决方案。只需将代码中的IP地址127.0.0.1更改为localhost即可
感谢您的阅读,希望对您有所帮助:)
来源:www.sychzs.cn/smartsteps/article/details/107002567
主流java进阶技术(学习资料分享)
而不是在网上搜索问题?还不赶快关注我们吧~
PS:因为公众号平台改变了推送规则,如果不想错过内容,记得看完后点击“阅读”并加个“星”,这样每次推送新文章,它将尽快出现在您的订阅中。在列表中。点击“关注”即可支持我们!
版权声明:本文内容由网友自愿贡献,本文所表达的观点仅代表作者自己的观点。本网站仅提供信息存储空间服务,不拥有任何所有权,也不承担相关法律责任。如果您发现本站有任何涉嫌侵权/非法内容,请发送邮件举报。一经核实,该网站将立即删除。
本文由斑马博客整理。本文链接为:https://www.sychzs.cn/index.php/post/8731.html