队列、多进/线程、共享内存、文件锁 使用原理和场景

队列:

使用队列是充分利用它异步的特性,即业务代码中有可以延迟响应的模块,当前代码不需要立即使用这个模块得到的结果,迟一些也没关系,代码还要继续执行主要的事情并返回给用户。

像邮件、订单等,这些场景,使用队列,延迟响应,使得系统性能提高(比如:不用在大量邮件发送代码上阻塞),同时又不用像web系统一样要及时响应,用户延迟收到消息是可以接受的。

而实质上,邮件发送一般还结合多进程/线程来做。因为仅靠异步还是不够的,处理大量邮件的业务代码如果也只是单一作业,无疑还是很慢,所以就要多个劳动力一起发,每个人发一部分。

多进程/线程:

这就是多进程/线程,同时做多件事情,来提升效率,完成目标。当然多进程/线程本来就具有异步性,而与利用队列的异步特点不同,多进程/线程的异步性是需要控制,需要做同步。

共享内存:

多进程作业因为每个进程的独立性,不能共享内存(同一个进程的线程可以共享内存,但跨进程的线程不能)。所以共享内存就可以用来存放并提供各个进程所需要的结果。

文件锁、信号量:

但是每个进程都去访问临界资源(共享内存或者文件资源),就会产生不一样的结果,这时候为确保进程/线程之间的井然有序地达到目标、完成任务,文件锁、信号量就因此而生。

php-fpm 不支持fork的使用,因此不管是fork还是swoole,都是采用cli模式。如果要在php-fpm下使用,就结合队列或者管道去执行fork。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值