消息队列RabbitMQ
应用场景
高并发场景下, 避免大量请求打到服务器中导致服务器导致服务器崩溃, 可以将请求存储到消息队列中, 处理时每次从队列中获取几个请求进行处理, 这样就实现了削峰.
应用解耦, 当一个服务调用多个服务时, 耦合度较高, 如果被调用服务接口发生更改, 那么服务调用者代码也得进行修改, 如果引入消息队列的话, 不管是什么服务, 获取什么数据, 直接将消息存储到信息队列中, 取时直接从消息队列中取就行了.,
异步, 比如在用户注册场景下, 用户注册成功100ms后将会发送邮件50ms 发送短信50ms 一共200ms 引入消息队列后, 发短信和发邮件可以同时执行 100ms + 50ms = 150ms 大大的提高了系统效率
消息代理和消息目的地
消息代理: 用于代理发送或接受消息的东西
消息目的地分为两种
- 队列: 点对点接收, 当消息推送到消息队列中时, 多个服务强占队列中的数据, 谁先抢到算谁的.
- 主题: 发布订阅, 只要订阅了该消息的服务都能接受到消息.
JMS和AMQP
JMS: 基于JVm消息代理规范
AMQP: 高级的消息队列协议, 兼容AMQP RabbitMQ就是AMQP的实现
从下标可以看出, 如果是全部服务都是使用java代码进行编写, 那么使用Jms比较好些, 如果后端服务跨语言进行编写, 那么使用AMQP协议好一些, 因为传输数据是以byte进行传输, 语言可以进行兼容.
虽然道路是曲折的,但前途是光明的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-05-21 cpu 是如何识别指令和数据的
2021-05-21 地址寄存器
2021-05-21 AX BX CX DX 寄存器