0%

生产者消费者模式

基础概念

概念介绍

某块模块负责产生数据,这些数据由另一个模块来负责处理。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。
该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费者从缓冲区取出数据
缓冲区作用

  1. 解耦,生产者和消费者只依赖缓冲区,而不互相依赖

  2. 支持并发和异步

  3. 支持生产者和消费者忙闲不均(来不及消费缓冲区可以暂存)

    使用场景

    队列(类似,但并不完全相等,有的队列没有缓冲区);
    swoole(业务逻辑(生产者)将数据单元通过swoole的send函数弄到swoole的一个缓冲区之间,通过work进程进行分发,task进程(消费者)进行消费。)

代码解析

CICD创建项目流程类似于生产者消费者模式;
(1)用户填写表单,创建一条CICD数据,生产者向数据表添加一条状态为pending的数据,类似于向缓冲区添加数据
(2)定时任务读取状态为pending的数据,消费处理后修改状态