【发布时间】:2012-07-12 20:56:18
【问题描述】:
我有一个应用程序,Web 服务器将一些请求重定向到后端服务器,后端服务器 (Linux) 将对 Web 服务器进行复杂的计算和响应。 对于 web server 和 backend server 之间的 tcp socket 连接管理,我认为有两个基本策略:
“短”连接:即每个请求一个连接。这对于套接字管理来说似乎很容易,并简化了整个程序结构。在accept之后,我们只是得到一些线程来处理请求,最后close这个socket。
“long”连接:即对于一个tcp连接,可以有多个请求一一对应。似乎这种策略可以更好地利用套接字资源并带来一些性能提升(我不太确定)。 但是这似乎比“短”连接带来了很多复杂性。例如,由于现在 socket fd 可能被多线程使用,因此必须涉及同步。还有更多,socket失败过程,消息序列……
对这两种策略有什么建议吗?
更新:,@SargeATM 的回答提醒我应该更多地介绍后端服务。 每个请求都是上下文无关的。后端服务可以根据单个请求消息进行计算。好像是……无国籍。
【问题讨论】: