1.引言
- 很多服务端项目都会涉及一个很基本的架构半同步/半反应堆网络模型即epoll(io主线程)+任务队列(fd or buf)+线程池。
- 复杂的业务逻辑都是封装成一个个任务交给工作线程处理,这里主要介绍下任务的设计。
- 任务的设计主要涉及任务基类、工作任务、任务工厂和任务分发引擎。
2.c++高性能rpc任务类图
3.工作机制
- 一个很核心的点,一般任务分为两类,一类是fd,一类是客户端的请求数据,Task里void* data保证了一定适配性;
- 使用者只需要设计自己的WorkTask;
- TaskFactory用于创建各种WorkTask,用了简单工厂模式,增加其他的WorkTask2,只要在TaskFactory里增加WorkTask2相关创建方法;
- 任务分发线程主要保证一个请求被一个线程处理,保持同步性;