- 消息队列的概念、原理和场景
消息队列概念:
队列结构的中间件
消息放入后,不需要立即处理
按照顺序进行逐步处理
核心结构:
消息队列应用场景
1、冗余(订单系统 后续需要严格的进行数据转换和记录 消息队列可以把这些数据持久化的存储在队列中,然后由订单后继处理程序进行获取,获取进行完成之后,再把这条记录进行删除,保证每一条数据都能够处理完成)
2、解耦(系统解耦,消息队列分为两套系统,解决两套系统之间深度耦合的问题,使用消息队列后入队的系统和出队的系统没有之间的关系,其中一套系统奔溃的时候都不会影响到另一套系统的正常运转,比如:订单系统当前台奔溃后,不会影响到其他财务系统 各种系统的正常运转)
3、流量削峰(秒杀、抢购,会出现非常明显的流量剧增,大量的需求集中在短短的几秒钟之内,对服务器的瞬间压力非常大,防止服务器导致奔溃)
4、异步通信
5、扩展性 (订单之后 会有财务.......)
6、排序保证 (处理顺序 单线程单进单出,保证数据按照顺序进行处理)
————————————————————————————————消息队列相当于中间件,需要灵活去使用哦~~——————————————————————————————
消息队列优点和缺点:
队列介质:Mysql
Redis
消息系统
消息处理触发机制
1、死循环方式读取:易实现,故障时无法及时恢复
2、定时任务:压力均分,有处理量上限 (订单系统、物流系统)
3、守护进程:类似php-fpm和php-cg,需要shell基础
-
解耦案例∶队列处理订单系统和配送系统
解耦案例:队列处理订单系统和配送系统架构设计
程序流程:对列表设计
架构设计:
程序流程:
-
流量削峰案例:Redis的List类型实现秒杀
-
RabbitMQ:更专业的消息系统实现方案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现