【问题标题】:Scaling a TCP/IP based system and ensuring high availability扩展基于 TCP/IP 的系统并确保高可用性
【发布时间】:2012-02-11 07:30:46
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    如何扩展这个基于 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 秒)。这还假设您找到了一种跨多个站点同步数据库的方法。
    • 负载平衡器解决方案。同步后端数据库也有同样的问题

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

    【讨论】:

    • 感谢麦克如此详尽的回答,它真的很有帮助。那么负载均衡器也会进行故障转移吗?我的意思是对于 HA,我相信负载平衡 + 故障转移是关键,对吗?另外,我忘记补充的一件事是我们对我们的数据库也有可扩展性和 HA 要求?我们应该采取什么方法?水平缩放对数据库有意义吗?另外,一个重要的疑问....我是否正确理解 HA 更多的是配置,在设计或编码期间我不需要关心什么?
    • @aryann,负载均衡器可以支持 HA 配置,但同样很大程度上取决于您所说的高可用性。两个人可能需要 HA 来提供服务,这对他们俩来说可能意味着截然不同的事情。至于 DB HA,请咨询您的 DB 供应商;它们中的大多数都支持某种多站点复制。最后,HA 涉及设计、配置和可能的软件需求。在我 15 年的网络工作中,我看到了许多糟糕的 HA 设计......这就是为什么我说:找一个 HA 顾问,不要依赖那些不了解您的环境和要求的人的免费建议
    猜你喜欢
    • 2020-08-10
    • 2010-10-26
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 2011-01-29
    • 2014-08-04
    • 2013-03-17
    相关资源
    最近更新 更多