我正在设计一个自定义客户端服务器 tcp/ip 应用程序。该应用程序的网络要求是:
- 能够通过安全的 TCP/IP 通道(在指定端口打开)说出自定义应用层协议
- 客户端-服务器连接/通道需要保持持久性。
- 如果服务器端应用程序的多个实例正在运行,则能够将客户端连接分派到服务器端应用程序的特定实例(基于服务器端唯一 ID)。
设计目标之一是使应用程序可扩展,因此负载平衡尤为重要。我一直在研究 EC2 和 Windows Azure 的负载平衡功能。我相信当今大多数产品都支持要求 1。但是我不太确定要求 2 和 3。特别是:
这些服务(EC2、Azure)是否允许应用通过指定额外的应用层要求来影响负载平衡策略?例如,Azure 对云服务使用循环作业分配,但上述要求 3 显然需要作为负载平衡决策的一部分考虑,即基于唯一 ID 转发,但如果唯一 ID 则使用循环分配在任何服务器端实例中都找不到。
根据要求 2,负载均衡器是否与持久连接一起使用?我对 Azure 的理解是,您可以将公共和私有端口对指定为端点,因此负载均衡器会监视公共端口并将连接请求转发到某个正在运行的实例的私有端口,所以基本上您可以这样做之后你想要的任何连接。这是正确的理解吗?
任何帮助,将不胜感激。