高性能服务器编程方法
weilin.jiang
Windows内核砖家
展开
-
【进程池封装】实现简单回射服务器
图.1 进程池框架图半同步/半异步模式进程池类定义class Process{public: Process() : m_pid(-1) {}public: pid_t m_pid; int m_pipefd[2];};templateclass ProcessPool{private: ProcessPool(int listenfd, int原创 2016-04-16 13:37:57 · 728 阅读 · 0 评论 -
【线程池封装】实现简单回射服务器
图.1 线程池框架半同步/半反应堆模式(半同步/半异步模式的变体)类封装:templateclass ThreadPool{public: ThreadPool(int threadnum = 8, int maxreqnum = 1000); ~ThreadPool() { delete [] m_Pthread; m_Stop = true; } /* 往原创 2016-04-16 14:28:58 · 628 阅读 · 0 评论 -
【服务器编程】初步确定服务器逻辑设计
【前言】本项目主要提供资源区、聊天、讨论区等服务。服务是具体的事情,而调度则是控制服务进行的主干线,所以多进程池/线程池的设计很重要。下面是服务器采用的进程/线程逻辑结构,而具体什么服务再封装起来使其被线程调用。图.1 初步服务器逻辑设计【编程逻辑】一般服务器由三部分组成:I/O,处理单元,数据存储。I/O模型:一般采用非阻塞模型(epoll的ET模式效原创 2016-04-17 20:05:38 · 975 阅读 · 0 评论 -
【服务器编程】服务器编程实现逻辑和超级服务
【前言】 由上一篇文章,我决定了服务器的控制逻辑,即多进程/多线程的服务器(Apache也是这个模型哦)。它掌控整个服务逻辑流程,但是具体服务是没有提供的,这就要我们自己再封装一些特定服务的类,然后在线程里调用。 因为服务器相应的请求种类是很多的,包括登陆请求、下载文件请求、刷新请求等等,那么就要我们自己封装一些数据结构来判断客户请求类型。另一方面,在我看来,虽然原创 2016-04-19 02:13:26 · 826 阅读 · 0 评论 -
【服务器编程】基础概念与功能划分
前言一个服务器框架可划分为三个部分,分别是 I/O模型、事件处理模式、并发模式。图.1I/O处理单元:处理客户连接,读写网络数据(机群情况:可实现负载均衡)逻辑处理单元:业务进程/线程(机群情况:逻辑服务器)网络存储单元:本地数据库、文件或者缓存(机群情况:数据库服务器)当然,划分并不是一成不变的;如有时I/O处理单元的 读写网络数据 可能由逻辑处理单元承担,那原创 2016-04-16 13:20:12 · 688 阅读 · 0 评论 -
【服务器编程】MYSQL数据库连接池封装
【前言】现代服务器后台数据基本上都用数据库管理,因为他有一套完整的数据保存方案,本连接池是根据MYSQL提供的纯C API封装。【上回战况】目前,服务器添加了文件服务器类,只是简单的文件传输;但是没有使用数据库保存文件的信息,随着数据的增加,文件的管理肯定就很难。【目前战况】为了同意所有线程访问数据库的方式,封装一个连接池,如下:class MYSQLConnPoo原创 2016-04-23 16:39:23 · 1003 阅读 · 0 评论 -
【服务器编程】EPOLL的LT和ET模式的区别和理解
【前言】epoll模型是服务器编程的高性能框架,比select 和 poll模型高效很多,当然还有其它的模型,如kqueue等,具体linux发行版提供不同的模型,一般都支持epoll吧。【理解】epoll提供两种工作模式:LT 和 ET。LT模式是epoll默认的工作方式,相当于一个效率很高的poll模型;而ET是高效的工作方式。LT 和 ET本质的区别是:原创 2016-07-07 23:05:04 · 20511 阅读 · 6 评论