专栏首页王亚昌的专栏服务器模型小结(未完成)

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

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

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

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

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

    大致伪代码如下:

listenfd = socket();  
bind();  
listen();  
while(1)  
{  
    newsockfd = accept();  
    if (error) continue;  
    if ((childpid = fork()) == 0) {  
        close(listen);  
        process(newsockfd);  
    }  
}  

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

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

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

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

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

5. 单进程IO复用

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 开多少个FCGI进程才合适

        现在网站很多都用FCGI布署到WEB SERVER上提供服务,但同一个服务的FCGI开多少个进程才合适呢?

    王亚昌
  • UNIX编程艺术之“多道程序设计”

        多道程序设计的主旨是“只做一件事并且做好”,这个主旨自始至终贯穿本章,文中举了管道、more命令,来说明,unix命令功能的单一性以及进程间如何进行通信...

    王亚昌
  • vmstat命令详解与举例

    [root@localhost ~]# vmstat -n 3       (每个3秒刷新一次) procs -----------memory-------...

    王亚昌
  • Python学习,多进程了解一下!学爬虫不会用多进程能行吗?

    首先我们先做一个小脚本,就用turtle画4个同心圆吧!这样在演示多进程的时候比较直观。代码如下:

    云飞
  • 1.进程管理

    11、对进程的描述错误的是( d) A.进程是动态的概念 B.进程执行需要处理机 C.进程是有生命期的 D.进程是指令的集合

    见贤思齊
  • linux进程管理

    查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux,ps -ef,正常与grep连用

    小小咸鱼YwY
  • Linux 进程总结

    进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。...

    杰哥的IT之旅
  • 进程

    以前的计算机一次只能执行一个程序,后来有了多道程序设计的电脑,可以宏观上执行多个程序。由此产生了进程的概念

    用户5426759
  • Linux进程基础

      计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令(instruction)。所...

    用户6754675
  • 浅谈3A和进程

    3计帐(Accounting):记录用户对各种网络服务的用量,并提供给计费系统。整个系统在网络管理与安全问题中十分有效。

    py3study

扫码关注云+社区

领取腾讯云代金券