nellson的专栏

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。

服务器模型小结(未完成)

1. 单进程同步IO(迭代服务器)

    server每次accept一个请求,收包,完成业务处理逻辑后回包,完成整个请求的处理后,才能继续接入下一个请求。这种server模式仅适用于业务处理

 

2. 父进程+动态创建子进程

    父进程accpet连接,有新连接到来时fork一个进程,然后继续accept,等待新的连接。业务逻辑由子进程处理,处理完后子进程exit,每个子进程只处理一个连接。由于父子进程共享accept操作返回的连接fd,因些子进程可以方便的拿到connfd并进行收发数据包的操作。

 

    大致伪代码如下:

 

 

3. 预创建进程池-子进程竞争accept,有惊群效应

    父进程启动后预先prefork一部分子进程,子进程都阻塞在accept,有新连接到来时,子进程竞争accept,竞争到的子进程负责这一次的业务逻辑处理,处理完成后继续阻塞在accpet上。

    可以使用锁进行同步,以避免惊群效应。

 

4. 父进程+预创建进程池, 父进程accept,子进程负责处理,规避了惊群效应

    父进程可通过管道的方式传入套接字给子进程,并且父进程需要维护子进程当前状态,根据UNP1测试,这种方式性能较差。

 

5. 单进程IO复用

    采用select/poll/epoll等IO复用技术,只使用一个进程,当有请求可读时,读请求并处理,处理后回包,这种服务器仅适合小包请求比较多,并且业务逻辑处理不需要阻塞的服务器。

 

6. 单进程接入+处理子进程池

    使用IO复用技术启用proxy进程负责收发包,收到的请求放到共享内存或管道中,处理子进程池中每个进程都阻塞于读管道请求上,一旦有请求到达,读请求,处理完成后写回管道中,由proxy回包给客户端。

 

 

 

 

阅读更多
个人分类: Linux学习
想对作者说点什么? 我来说一句

客户端服务器模型

2013年10月12日 1.07MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭