同步调用 VS 异步调用
消息队列构建异步调用架构
- 消息生产者
- 消息队列
- 消息消费者
消息队列的好处
- 实现异步处理,提升处理性能。
- 更好的伸缩性
- 削峰填谷
- 失败隔离和自我修复
- 因为发布者不直接依赖消费者,所以消息系统可以将消费者系统错误与生产者系统组件隔离。
- 生产者和消费者互相不受对方失败影响。
- 这意味着任意时刻,我们都可以对后端服务器执行维护和发布操作。我们可以重启、添加或删除服务器而不影响生产者可用性,这样简化了部署和服务器管理的难度。
- 解耦
事件驱动架构 EDA
主要 MQ 产品比较
- RabbitMQ:性能好,社区活跃,Erlang 开发
- ActiveMQ:跨平台,Java 友好
- RocketMQ:阿里开源,Java开发,性能好,可靠性好
- Kafka:linkedIn 出品,Scala 开发,分布式伸缩性好。