服务端网络框架
生产者消费者模式
生产者的责任
监听连接,有新连接到来时就接受并将其放入待检查集合内;
检查请求,每当客户端有新数据到来时则将该连接放入待消费队列内,供消费者取用进行业务处理
关闭连接,跟进select()、epoll_wait()的超时时长定时触发连接活动性检查,将超时无活动的socket关闭
请求限流,当待消费队列内socket已达最大数量,则新的客户端连接将不再处理
消费者责任
业务处理,读取客户端数据,逻辑处理,并返回结果。当处理完成后将该socket放入待检查队列
超时放弃,待消费队列内滞留时间过长的socket直接放弃,因为很大几率客户端在请求超时无反应时已放弃等待
领导者追随者模式
每个线程都去抢占锁,加锁成功后即可accept()客户端连接,接受连接后则持续处理请求直到没有新请求过来,然后关闭该连接
优点,处理简单
缺点,无法做请求限流、超时放弃