Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

使用持续连接机制

对于服务器端,使用 TCP 持续连接机制可以保护服务器,使其避免为关闭的(或网络分区的)客户机浪费系统资源。 如果在持续运行了足够长时间的服务器中不清除这些资源,当客户机崩溃或重新引导时,会导致浪费的资源量无限增长。

如果客户机和服务器使用 TCP 流进行通信,则它们都应该启用 TCP 持续连接机制。 这也适用于非 HA 单服务器情况。

其它面向连接的协议可能也需要具有持续连接机制。

对于客户机端,使用 TCP 持续连接机制,可以使该客户机在网络地址资源发生故障切换或从一个物理主机切换到另一个物理主机时收到通知。 网络地址资源的这种传送将中断 TCP 连接。 但是,除非该客户机已启用了持续连接机制,否则当连接中断而当时该连接又正处于静止状态时,该客户机不一定会收到关于此情况的通知。

例如,假设客户机正在等待服务器对长时间运行请求的反应,且该客户机的请求消息已发送到服务器并已在 TCP 层得到了确认。 在这种情况下,客户机的 TCP 模块无需不断重新发送请求,并且客户机应用程序处于阻塞状态,等待对该请求的反应。

在适当的情况下,客户机应用程序除了使用 TCP 持续连接机制以外,还必须在其级别上执行自己的周期性持续连接机制,因为 TCP 持续连接机制并不是在处理所有可能的边界问题上都是完美的。 使用应用程序级别的持续连接机制通常要求客户机服务器协议支持一个空操作,或者至少支持一个有效的只读操作(例如状态操作)。