2

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

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

  2. 安全呢。我可能可以做的一件事是在安全套接字上使用这种通信,或者可能获得加密数据(我可以在这里使用的任何特定加密??)。有没有其他的方法来保护安全?

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

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

4

1 回答 1

3

如何扩展这个基于 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,您可能希望聘请一位在实施这些服务方面具有良好记录的顾问(如果您内部没有此类资源)。

于 2012-01-16T11:11:37.143 回答