这里的网关服务器(简称gated吧)是指逻辑服务器前面的那排服务器,一般有几个主要功能:
(1)接入
(2)加解密
(3)解缩压
gated一个特点是不处理逻辑,每个连接之间不存在交互关系,这点非常关键,是我这个优化方案的基础。
上面(2)(3)两项目是很吃CPU的,而目前的机器一般是X个CPU,Y个核的,我们可以通过多线程的方式,更好利用机器硬件。当然多线程之间肯定没有任何锁之类的东西。有了锁,多线程效率就下来了。
上行处理过程:
接收线程收到数据后,将数据写入各自连接的接收队列中。
创建X个处理线程,每个处理线程根据某种hash算法去不同的接收队列中读取数据;X个处理线程并行地处理加解密&解压缩。
把数据发给后面的逻辑服务器,一个处理线程对应一个发送队列,1个发送线程从X个发送队列中取数据,发给后面服务器。
下行数据与上行数据的处理过程是一样的。