如何扩展这个基于 tcp/ip 的组件。该组件部署在服务器上并正在侦听端口。将来,如果此时设想有更多来自 C++ 系统的数据,我们应该能够扩展这个 java 组件。
您通常使用网络负载平衡器来跨多个服务器扩展此类服务。该负载均衡器可以使用多种算法分配负载,例如:
- CPU 负载(通常用 snmp 测量)
- 客户端 IP 地址(如果在将客户端映射到服务时需要持久性)
- 活动套接字数
- ETC
查看HAProxy以了解流行的开源负载均衡器。 F5拥有最流行的商业负载均衡器解决方案。
安全呢。我可能可以做的一件事是在安全套接字上使用这种通信,或者可能获得加密数据(我可以在这里使用的任何特定加密??)。有没有其他的方法来保护安全?
- 如前所述,SSL 是一种选择,但请理解,如果您在执行客户服务的同一硬件上进行加密,这将对您的服务性能造成很大影响。沿着这些思路的一个选择是使用在硬件中实现 SSL 的商业负载平衡器。然后,该负载平衡器会将未加密的套接字转发到您的 TCP 服务场。
- 在某些情况下,您可以使用IPSec网络级加密;通常,这是另一种网络硬件解决方案。通常,您的客户端会下载驻留在其 PC 上的 IPSec 应用程序...然后他们会连接到您的 IPSec 服务器,该服务器会在他们的客户端和您的 IPSec 终止点之间进行加密
- 带有端口转发的SSH隧道(低技术解决方案)
- tcpcrypt作为一项未来技术看起来很有趣,但我不确定它现在有多成熟。
还需要满足高可用性的要求。我该如何处理?我怎么可能在这里有冗余?
很大程度上取决于您所说的高可用性,以及您需要什么样的恢复时间。在高层次上,您有几个选择:
- 如果您不需要客户端到套接字的映射持久性,则基于 DNS 的 HA 可以工作;如果您使用 DNS,您需要愿意接受典型的 DNS A 记录超时(通常人们不会低于 ~5 分钟/300 秒)。这还假设您找到了一种跨多个站点同步数据库的方法。
- 负载平衡器解决方案。与同步后端数据库相同的问题
要进行任何类型的 HA,您可能希望聘请一位在实施这些服务方面具有良好记录的顾问(如果您内部没有此类资源)。