服务器应用程序设计方法

时间:2008-11-12 19:26:02

标签: client-server

在undergrad期间,我选择使用适用于Linux的POSIX套接字进行网络编程课程。作为参考,我们使用了使用TCP / IP(角色和史蒂文斯)的网络互联。 2008年它是一个相当陈旧但仍然适用的文本,需要一个到几个服务器设计。

本书中没有真正展示的一种设计是客户端连接到后端应用程序服务器的情况,通过单个TCP连接向服务器发送多个请求。由于多个请求通过从属套接字到达服务器,并且响应通过相同的从属套接字发送。从属套接字变得拥塞作为响应并且通过相同的套接字接收请求,是否允许在端点之间进行第二次TCP连接以允许全双工通信速度?可以使用哪些其他架构来提高服务器性能?

2 个答案:

答案 0 :(得分:2)

由于套接字只是附加到数据包的数字(称之为路由号或地址),我无法想象套接字本身会变得拥挤。

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

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

但我真的没有看到原始的假设是完全准确的。我错了......

答案 1 :(得分:1)

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

通过单个连接发送多个请求实际上用于增加在多个协议中的性能(因为重新连接会避免握手和慢启动开销)。一个例子是HTTP保持连接。提高性能的另一种方法是使用流水线技术(在不等待响应的情况下发送多个请求),这显然只有在重复使用TCP连接进行多个请求时才能完成。