扩展基于TCP / IP的系统并确保高可用性

时间:2012-01-16 10:23:31

标签: tcp scalability distributed high-availability tcp-ip

我有一个基于TCP / IP的组件,它与基于c ++的系统进行通信。实际上,它正在从该系统读取原始字节,然后将这些原始字节封送在对象中并将其存储在DB中。这个基于多线程tcp / ip的组件在java中,可以部署在双核或四核处理器上(不确定它是否对我的问题很重要,但不过我提供的细节)。现在我有几个问题:

  1. 如何扩展此基于tcp / ip的组件。此组件部署在服务器上并正在侦听端口。将来,如果此时设想的数据来自C ++系统,我们应该能够扩展这个java组件。

  2. 安全性怎么样?我可能做的一件事是在安全套接字上使用这种通信,或者可能获得加密数据(我可以在这里使用的任何特定加密?)。还有其他方式来处理安全问题吗?

  3. 还要求满足高可用性。我该如何处理?我怎么可能在这里有冗余?

  4. 是的,我们正在研究产品的系统架构,因此,我想知道是否有一些经验丰富的建筑师或设计师可以帮助我。

1 个答案:

答案 0 :(得分:3)

  

如何扩展此基于tcp / ip的组件。此组件部署在服务器上并正在侦听端口。将来,如果此时设想的数据来自C ++系统,我们应该能够扩展这个java组件。

您通常使用网络负载均衡器来跨多个服务器扩展这些类型的服务。该负载均衡器可以使用各种算法分配负载,例如:

  • CPU负载(通常用snmp测量)
  • 客户端IP地址(如果在将客户端映射到服务时需要持久性)
  • 活动套接字数

查看HAProxy的流行开源负载均衡器。 F5拥有最受欢迎的商业负载均衡解决方案。

  

安全性怎么样?我可能做的一件事是在安全套接字上使用这种通信,或者可能获得加密数据(我可以在这里使用的任何特定加密?)。还有其他方式来处理安全问题吗?

  • 如前所述,SSL是一种选择,但要了解,如果您在执行客户服务的同一硬件上进行加密,那么对您的服务的性能就会大打折扣。这些方面的一个选择是使用在硬件中实现SSL的商业负载均衡器;然后,负载均衡器会将未加密的套接字转发到您的TCP服务场。
  • 在某些情况下,您可以使用IPSec网络级加密;通常,这是另一种网络硬件解决方案。通常,您的客户端将下载驻留在其PC上的IPSec应用程序...然后它们连接到您的IPSec服务器,该服务器在其客户端和IPSec终端点之间进行加密
  • SSH使用端口转发进行隧道传输(低技术解决方案)
  • tcpcrypt作为未来的技术看起来很有趣,但我不确定它现在有多成熟。
  

还要求满足高可用性。我该如何处理?我怎么可能在这里有冗余?

很大程度上取决于您的高可用性是什么意思,以及您需要什么样的恢复时间。在较高的层面上,您有几个选择:

  • 如果您不需要客户端到套接字映射持久性,则基于DNS的HA可以正常工作;如果你使用DNS,你需要愿意接受典型的DNS A记录超时(通常人们不会低于~5分钟/ 300秒)。这也假设您找到了跨多个站点同步数据库的方法。
  • 负载均衡器解决方案。与同步后端数据库相同的问题

要做任何类型的医管局,您可能想聘请一位在实施这些服务方面有良好记录的顾问(如果您内部没有此类资源)。