当前位置: 技术问答>linux和unix
高性能网络服务程序架构的一点困惑(请高手多提点意见)
来源: 互联网 发布时间:2016-02-25
本文导语: 题目可能太大了,其实我正在思考的是在哪种情况下,采用什么方式的网络架构比较合适。 我认为基本的架构有: 单进程(单线程处理)、单进程(多线程)、多进程(每个进程是单线程)、多进程(每个进程是...
题目可能太大了,其实我正在思考的是在哪种情况下,采用什么方式的网络架构比较合适。
我认为基本的架构有: 单进程(单线程处理)、单进程(多线程)、多进程(每个进程是单线程)、多进程(每个进程是多线程)。
在网上看到一篇帖子,说apache是采用的上面第4中模式(现在还没有机会去看源码),我想不明白的是, web服务肯定只能指定一个监听端口,而多个进程肯定不能同时监听同一个端口,那么多进程的应用会是什么场景呢?
我认为基本的架构有: 单进程(单线程处理)、单进程(多线程)、多进程(每个进程是单线程)、多进程(每个进程是多线程)。
在网上看到一篇帖子,说apache是采用的上面第4中模式(现在还没有机会去看源码),我想不明白的是, web服务肯定只能指定一个监听端口,而多个进程肯定不能同时监听同一个端口,那么多进程的应用会是什么场景呢?
|
队列处理..
比如:
进程1 负责监听 将获得的连接放入 队列 1,
进程2 负责查看 队列里的 连接是否有 可读 的数据, 如果有, 将数据读出, 放入队列 2.
进程3,4,5... 从 队列2中 取出数据来处理(因为数据处理会花比较多的时间, 所以由多个进程来处理) ,
将处理过的数据 放入 发送队列 3.
进程6 负责从队列3中取出处理过的数据 ,并回复给相应的客户端.
比如:
进程1 负责监听 将获得的连接放入 队列 1,
进程2 负责查看 队列里的 连接是否有 可读 的数据, 如果有, 将数据读出, 放入队列 2.
进程3,4,5... 从 队列2中 取出数据来处理(因为数据处理会花比较多的时间, 所以由多个进程来处理) ,
将处理过的数据 放入 发送队列 3.
进程6 负责从队列3中取出处理过的数据 ,并回复给相应的客户端.