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个进程,队列消耗一个进程

注意事项

参考