美文网首页
php-消息队列

php-消息队列

作者: AGEGG | 来源:发表于2020-04-04 20:47 被阅读0次

主要内容

1.消息队列的概念,原理和场景
2.解耦案例:队列处理订单系统和配送系统
3.流量削峰案例:Redis的List类型实现秒杀
RabbitMQ:更专业的消息系统实现方案

1.消息队列的概念、原理、实现方式

1.1消息队列概念

队列结构的中间件
消息放入后,不需要立即处理
由订阅者/消费者按顺序处理


image.png
1.3 应用场景

冗余
解耦
流量削峰
异步通信
拓展性
排序保证

常见队列实现优缺点

队列介质
1.Mysql:可靠性,易实现,速度慢
2.Redis: 速度快,单条大消息包时效率低
3.消息系统:专业性强,可靠,学习成本高

消息处理触发机制

1.死循环方式读取:易实现,故障时无法及时恢复
2.定时任务:压力均分,有处理量上限
3.守护进程:类似于PHP-FPM和PHP-CG,需要shell基础

2.解耦案例:队列处理订单系统和配送系统

image.png image.png

思路:使用队列将订单系统与配送系统解耦
1.订单系统同以往记录到mysql
2.配送处理系统每次查询数个未完成订单标记为代执行订单,执行配送业务后标记为以完成
3.使用定时任务定时执行配送处理系统

image.png image.png

3.流量削峰案例:Redis的list类型实现秒杀

3.1redis数据类型中的list类型

双向链表
LPUSH/LPUSHX:将值插入到(/存在的)列表头部
LPUSHX:将值插入到存在的列表头部,若不存在操作无效
RPUSH/RPUSHX:将值插入到(/存在的)列表尾部
LPOP:移出并获取列表的第一个元素
RPOP:移出并获取列表的最后一个元素
LTRIM:保留指定区间内的元素
LLEN:获取列表长度
LSET:通过索引设置列表元素的值
LINDEX:通过索引获取列表中的元素
LRANGE:获取列表指定范围的元素


image.png image.png

思路:
1.存到redis的list中形成队列
2.从redis队列中取出保存数据库

RabbitMQ

image.png image.png

相关文章

  • php-消息队列

    主要内容 1.消息队列的概念,原理和场景2.解耦案例:队列处理订单系统和配送系统3.流量削峰案例:Redis的Li...

  • 消息队列:消息队列简介

    1. 什么是消息队列 消息队列(message queue),是一种应用程序的通信方法; 消息队列是 生产者-消费...

  • 消息中间件

    消息中间件,也可以叫做中央消息队列或者是消息队列(区别于本地消息队列,本地消息队列指的是 JVM 内实现的队列实现...

  • 消息队列对比

    引用: 常用消息队列对比消息队列及常见消息队列介绍 常用消息队列 1. RabbitMQ 用erlang语言开发的...

  • 消息队列应用-使用异步队列就解耦了吗

    消息队列作用一文介绍了为什么要使用消息队列。我们再来讨论下如何有效使用消息队列。 消息队列模式 目前主流消息队列主...

  • Kafka常见问题解决

    概要:我们使用消息队列,就需要知道为什么要用消息队列,什么场景需要用消息队列,使用消息队列能带来哪些好处和消息队列...

  • 进程间通信(下)

    消息队列 在UNP第二卷中详细介绍了两种消息队列:Posix消息队列和System V消息队列。这两种消息队列很相...

  • APUE读书笔记-15进程内部通信(6)

    7、消息队列 消息队列是存放在内核中的消息的链表,通过消息队列标识进行标记。我们把消息队列称为队列,把它的标识称为...

  • java消息机制

    1.什么是消息队列? 1.消息队列是一个队列,先进先出,你无法读取消息队列中间的消息,只能按照顺序,从消息队列的头...

  • springboot项目架构(4)activemq、rabbit

    消息队列实现 支持的消息队列 ActiveMq RabbitMq RocketMq Kafka 各个队列实现队列与...

网友评论

      本文标题:php-消息队列

      本文链接:https://www.haomeiwen.com/subject/dsjouhtx.html