Nginx多进程高并发、低时延、高可靠机制在缓存twemproxy代理中的应用
|
不支持该特性的内核,一个ip+port组合,只能被监听bind一次。这样在多核环境下,往往只能有一个线程(或者进程)是listener,也就是同一时刻只能由一个进程或者线程做accept处理,在高并发情况下,往往这就是性能瓶颈。其网络模型如下: 在Linux kernel 3.9带来了reuseport特性,它可以解决上面的问题,其网络模型如下: reuseport是支持多个进程或者线程绑定到同一端口,提高服务器程序的吞吐性能,其优点体现在如下几个方面: i)允许多个套接字 bind()/listen() 同一个TCP/UDP端口 ii)每一个线程拥有自己的服务器套接字 iii)在服务器套接字上没有了锁的竞争,因为每个进程一个服务器套接字 iiii)内核层面实现负载均衡 iiiii)安全层面,监听同一个端口的套接字只能位于同一个用户下面 4.3.3 Master进程和worker进程如何通信? 由于master进程需要实时获取worker进程的工作状态,并实时汇总worker进程的各种统计信息,所以选择一种可靠的进程间通信方式必不可少。 在twemproxy改造过程中,直接参考nginx的信号量机制和channel机制(依靠socketpair)来实现父子进程见通信。Master进程通过信号量机制来检测子进程是否异常,从而快速直接的反应出来;此外,借助socketpair,封装出channel接口来完成父子进程见异步通信,master进程依靠该机制来统计子进程的各种统计信息并汇总,通过获取来自master的汇总信息来判断整个twemproxy中间件的稳定性、可靠性。 (编辑:PHP编程网 - 金华站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

