linux 高性能服务器编程
1. 高性能定时器:时间轮,时间堆 (處理超時時間,如nginx使用紅黑樹,找出最可能超時的事件)
2. 高性能服务器程序框架:(nginx 使用的是基於事件模型,epoll,不阻塞,異步處理)
两种高效的事件处理模式: Reactor模式 Proactor模式
两种高效的并发模式:半同步/半异步模式 领导者/追随者模式
有限状态机
提高服务器性能的其他建议:池(如nginx,在得到一個連接時,會創建ngx_connection_t; 在得到一份請求的時,會創建ngx_request_t; 這些結構體的分配都在ngx_pool_t上分配,但請求完畢時或斷開連接時,釋放ngx_pool_t; 免除了多次使用malloc和free,且ngx_pool_t可重用)数据复制,上下文切换和锁 (nginx worker process 綁定cpu, 省去上下文切換;鎖,在各個worker process shared 數據使用自旋鎖,如ngx_http_limit_req_module, 記錄每個ip的請求次數,這些信息各個進程是共享的)
3.进程池和线程池 (基於事件驅動,綁定cpu,高效;支持線程池,為了支持第三方的庫,可能有阻塞I/O操作,或者寫第三方模塊的沒注意處理事件驅動,有導致主線程阻塞的行為)
Live together,or Die alone!