服务端程序任务的设计思路

1.引言

  • 很多服务端项目都会涉及一个很基本的架构半同步/半反应堆网络模型即epoll(io主线程)+任务队列(fd or buf)+线程池。
  • 复杂的业务逻辑都是封装成一个个任务交给工作线程处理,这里主要介绍下任务的设计。
  • 任务的设计主要涉及任务基类、工作任务、任务工厂和任务分发引擎。

2.c++高性能rpc任务类图

服务端程序任务的设计思路_第1张图片

3.工作机制

  • 一个很核心的点,一般任务分为两类,一类是fd,一类是客户端的请求数据,Task里void* data保证了一定适配性;
  • 使用者只需要设计自己的WorkTask;
  • TaskFactory用于创建各种WorkTask,用了简单工厂模式,增加其他的WorkTask2,只要在TaskFactory里增加WorkTask2相关创建方法;
  • 任务分发线程主要保证一个请求被一个线程处理,保持同步性;

你可能感兴趣的:(服务器开发,epoll,rpc)