【问题标题】:Server application design methodologies服务器应用程序设计方法
【发布时间】:2008-11-12 19:26:01
【问题描述】:

在本科期间,我选择参加一个使用 POSIX 套接字 for linux 的网络编程课程。作为参考,我们使用了 Internetworking using TCP/IP (comer and stevens) 一书。 2008 它是一个相当过时且仍然适用的文本,它需要一个通过多个服务器设计。

书中没有真正介绍的一种设计是客户端连接到后端应用程序服务器通过单个 TCP 连接向服务器发送多个请求的情况。由于多个请求通过从属套接字发送到服务器,并且响应通过同一个从属套接字发送。当响应和请求通过同一个套接字接收时,从套接字变得拥塞,是否允许在端点之间建立第二个 TCP 连接以实现全双工通信速度是更好的选择?还有哪些其他架构可用于提高服务器性能?

【问题讨论】:

    标签: client-server


    【解决方案1】:

    由于套接字只是一个附加在数据包上的数字(称为路由号或地址),我无法想象套接字本身会拥塞。

    您可以处理套接字的代码,但这应该很容易通过在数据包到达时分发它们来解决。

    您还可以将传入和传出的数据包处理编码为在不同的线程上进行,甚至可以将数据包排队以分发到多个线程。

    但我真的不认为最初的假设是完全准确的。我可能是错的......

    【讨论】:

      【解决方案2】:

      TCP 连接已经是全双工的。您可以(简化)将 TCP 连接视为一对单向连接(一个发送和一个接收)。

      通过单个连接发送多个请求实际上用于提高多个协议的性能(因为重用连接可以避免握手和慢启动开销)。一个例子是 HTTP 保持连接。提高性能的另一种方法是使用流水线(发送多个请求而不等待响应),显然只有在为多个请求重用 TCP 连接时才能做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-25
        • 2018-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 2015-01-16
        • 1970-01-01
        相关资源
        最近更新 更多