1.swoole 简介

1.进程



2.共享内存



3.swoole 结构



1.master 进程(swoole 主进程)
	1.这个进程用于处理swoole的核心事件驱动的 ;
	2.拥有若干个 Reactor 线程 ;
	3.Reactor 子线程中运行了 epoll 实例, swoole 所有的对于事件的监听都会在这些线程中实现,
  比如来自客户端的连接,本地通信用的管道以及异步操作用的文件,文件描述符都会注册在这些 epoll 中;

2.Manager 进程(管理进程)
	用于创建和管理更下一层的 Worker 进程和 Task 进程,Manager 中不会运行任务业务层的逻辑,
   仅仅只做进程的管理和分配

3.工作进程
	1.Worker 进程,swoole 的主逻辑进程,用于处理来自客户端的请求
	2.Task Worker 进程,swoole 提供的异步工作进程,主要用于处理一些耗时任务较长的同步任务


	在 swoole 中,进程与进程之间的通信是基于管道的, 
在 Master 当中,当Reactor 接收到了来自客户端的数据时,
这些数据会通过管道发送给 worker 进程,由 worker 进程进行处理;
当 worker 进程需要投递任务到 task worker 进程中时,也是通过管道来实现整个数据的投递;
我们可以通过设置 swoole 的配置参数,来使得 worker 进程和 task 进程之间的通信走系统的消息队列。

4.一个请求连接的生命过程

	当一个新的客户端连接到来时,首先会被 main reactoer 接收,然后将这个连接读写操作的监听注册到对应的 reactor 线程中,
并通知 worker 进程处理对应的 onConnect, 也就是接收到连接的回调。当客户端发送数据之后,reactor 线程会收到这些数据并通过
管道,发送给 worker 进程去处理,worker 进程如果需要投递任务,它就会将数据同样通过管道,发送给 task 进程,task 进程处理完成后,
返回给 worker, worker 通知 reactor 线程,发送数据交回给客户端。当 worker 进程出现意外,或者处理一定的请求次数关闭之后,
manager 进程会重新拉起一个新的worker 进程,保证系统中的 worker 进程数目是一定的。

4.Task 进程

	task 进程是 swoole 中独立于 worker 进程的工作进程,用于处理一些耗时比较长的逻辑。
  这些逻辑如果在 task 进程中处理,并不影响 worker 进程去处理来自客户端的请求,由此大大提高了
  swoole 扩展处理并发的能力。
    在 worker 进程对,通过调用 task() 方法,发送数据通知到 task 进程,task 进程会在 onTask() 回调中,
  接收到这些数据,并进行处理,处理完成后,调用 finish() 函数,或者直接 return, 返回消息给 worker 进程。
  worker 在 onFinish() 函数中,收到这些消息,进行处理。
Task 常见问题

Task 传递数据大小:
	数据小于 8k : 直接通过管道传递;
	数据大于 8k : 写入临时文件传递;

Task 传递对象:
	可以通过序列化传递一个对象的拷贝;
	因为在 Task 当中,和 Worker 是2个不同的进程,他们的内存空间是不一样的,因此他们的变量存储也不一样;
	所以,在 Task 中对对象的改变不会反应到 Worker 进程中
	数据库连接和网络连接对象不可以传递

Task 的 onFinish 回调
	Task 的 onFinish 回调会发回调用 task 方法的 worker 进程, 是投递给它的那个 worker 进程



5.Timer 定时器



task worker 使用系统定时器 , timerfd

swoole_timer_tick(); // 创建一个永久定时器
swoole_timer_after(); // 一次性定时器


https://github.com/osgochina/Donkey




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值