【Nebula系列】通过UNIX域套接字传递描述符的应用
传送文件描述符是高并发网络服务编程的一种常见实现方式。Nebula 高性能通用网络框架即采用了UNIX域套接字传递文件描述符设计和实现。本文详细说明一下传送文件描述符的应用。 1. TCP服务器程序设计范式 开发一个服务器程序,有较多的的程序设计范式可供选择,不同范式有其自身的特点和实用范围,明了不同范式的特性有助于我们服务器程序的开发。常见的TCP服务器程序设计范式有以下几种: 迭代服务器 并发服务器,每个客户请求fork一个子进程 预先派生子进程,每个子进程无保护地调用accept 预先派生子进程,使用文件上锁保护accept 预先派生子进程,使用线程互斥锁上锁保护accept 预先派生子进程,父进程向子进程传递套接字描述符 并发服务器,每个客户端请求创建一个线程 预先创建线程服务器,使用互斥锁上锁保护accept 预先创建线程服务器,由主线程调用accept 当系统负载较轻时,传统的并发服务器程序模型就够了。相对于传统的每个客户一次fork设计,预先创建一个进程池或线程池可以减少进程控制CPU时间,大约可减少10倍以上。 某些实现允许多个子进程或线程阻塞在acce...