RabbitMQ
- 系统之间解耦
- 基于订阅的关系,应用程序之间共享传递数据。
- 异步处理业务。
- 缓解系统瓶颈:在访问量剧增的情况下,应用系统不用等待处理结果,用消息队列可以在队列中堆积消息,提高系统的吞吐量和稳定性。
个人总结:将大量的消息发布到队列中(队列可以使用缓存进行堆积消息,即缓存区)在系统内部或者进程间进行异步消费处理(如果消费慢可以加大消费者数量),来解决服务间内部或者各个进程间的耦合。
- 信道: 主要解决tcp建立比较耗时以及节约系统资源而设计的。一个tcp中存在多个channel,每个channel都自己为的编号。每个编号都会有对应的线程进行处理。实现一个高性能的处理
- 订阅:消息优先使用basic.consume(如果队列有消息可以一直接受);循环内少用basic.get(会先consume队列,检索第一条消息,最后取消订阅)
内存计算
- 1.8k 新建空队列所占空间
在64位计算机中,一个字长所占的字节数为8
一个持久化队列绑定到一个持久化交换机会在rabbit_queue和rabbit_durable_queue表中占用58字,在各个*_route表中总共176字,一共234字
234 * 8(字节/字) = 1872字节 = 1.8k
erlang 进程技术 默认2的20次方(1048576)
- 9个进程:一个新链接消耗4个进程,链接开发一个信道消耗4个进程,队列消耗一个进程
注意事项
参考
- 参考1
- 参考2
- 参考3: RabbitMQ的几种典型使用场景
- 参考4:Docker Rabbitmq Cluster 注意shell脚本中
rabbitmq@rabbitma1
修改为rabbit@rabbitmq1
- 参考5:ram node| disk note
- 问题
评论