高性能网络服务程序简介

 

   网络服务程序一般分为:单线程重复式、多进程网络服务、多线程网络服务、线程池网络服务及IO多路复用。

  1、单线程重复式,是一种简单的阻塞等待,侦听服务,连接,提供服务,释放,连接,服务,释放......... 若当前处于连接状态,有新的连接到达,则进入排队队列等待服务。

   单线程重复式实现简单,但是确定也明显,每次只能为一个用户提供服务,若服务时间长,则对排队连接的用户体验产生不利影响。实际很少使用。

 2、多进程网络服务模式是利用linux系统中的父子进程关系为多用户提供并发服务。其基本理念是来一个用户,启动一个进程。多进程网络服务模式的原理是:主服务进程在端口进行绑定侦听,同时设置被绑定的地址和端口是可重用的,启动侦听。若当前有新连接到来,则启动一个子进程与其交互,服务结束后,子进程自动退出。

   多进程网络服务模式方法通用,但是每次启动并关闭子进程会带来很大的开销。在大用户量并发的前提下,会产生不小的负担;另外父子进程间的数据共享,同步等也会有一定的困难。实际商用是一种可选模式

 3、多线程网络服务模式类似多进程网络服务模式,不同之处在于前者为新到来的连接启动一个服务线程。

    多线程网络服务程序有点是便捷高效,但是仍然存在动态线程申请与释放的开销,如存在大量用户在线,可能会带来线程间的切换开销。实际商用中是一个可行的模式

 4、线程池网络服务,池是实际工程中常用的概念,如线程池,数据库连接池等,基本理念是先创建一批资源,当有用户到来时,直接分配已创建好的资源,它的主要目的是减少系统在频繁创建资源时的开销。实现原理是,主服务线程创建既定数量的服务线程,为其服务,服务完毕,线程不进行释放,重新放回线程池;若当前线程池已满,则将当前的连接加入等待队列。

   线程池的优点是性能高效,商用中很多采用这种模式。

 5、IO多路复用是一种非阻塞的方式,它与之前的多进程多线程不同之处在于程序不会因IO操作而进入阻塞状态。IO多路复用是系统在内核级进行缓存数据,当存在可读或者可写的数据时,主动向应用程序发送通知。IO多路复用的实现原理是:在主服务线程里进行非阻塞等待,侦听当前到来的客户连接,管理新到连接的套接字,调用select.POLL/EPOLL处理。若有某个套接字有IO交互,则完成IO读或者写,若连接断开,则套接字重新置为空状态。

   IO多路复用模式系统开销小,不用创建和维护线程或进程队列。应用比较多。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值