RabbitMQ 生产环境部署与调优
生产环境部署与调优 📖 前置阅读:本文是 RabbitMQ 系列的终篇,假设读者已经掌握前五篇的全部内容(核心概念、交换机类型、SpringBoot 集成、消息可靠性、高级特性)。 一、⚡ 问题切入:单机 RabbitMQ 什么时候扛不住? 前三篇代码都在本地单机 RabbitMQ 上跑的——一个 Docker 容器,内存 1G,磁盘 10G。跑到生产环境会发生什么? 场景 单机 RabbitMQ 的后果 服务器宕机 整个 MQ 服务中断——所有生产者阻塞、消费者闲置 消息积压 50 万条 内存打满 → RabbitMQ 触发内存告警 → 阻塞所有生产者(flow control) 磁盘写满 RabbitMQ 拒绝所有写入→ 消息丢失 每秒 2 万条消息 单机 CPU 100%,消息延迟从 1ms 飙升到 500ms 单机不是不能用,但要知道它的边界。以下场景必须上集群: 消息不能丢(金融交易、订单处理) 服务不能停(7×24 在线业务) 吞吐量超过单机极限(> 5 万 msg/s) 二、RabbitMQ 集群架构 2.1 集群的基本原理 RabbitMQ 集群是多个 Erlang 节点组成的对等网络——每个节点运行一个 RabbitMQ 实例。 集群中共享的东西: Exchange、Queue、Binding 的元数据(定义信息)——在所有节点上自动同步 用户、vhost、权限——自动同步 集群中不共享的东西: ...