【问题标题】:How to achieve high availability?如何实现高可用?
【发布时间】:2010-03-17 03:56:08
【问题描述】:

我的老板想要一个系统来关注整个大陆的灾难性事件。他想在美国有两台服务器,在亚洲有两台服务器(每个大陆有一台登录服务器和一台工作服务器)。

  1. 如果地震破坏了两大洲之间的联系,两者应该单独行动。当连接恢复时,它们应该相互同步恢复正常。
  2. 他没有信心,不允许使用外部云系统。
  3. 系统应考虑可扩展性,这意味着添加新服务器应易于配置。
  4. 服务器应进行负载平衡。
  5. 服务器之间的连接应该非常安全(加密并通过 SSL 发送,尽管 SSL 负责加密)。
  6. 系统应该让一个且只有一个用户使用一个帐户登录。 (注意大陆之间的延迟,共享帐户的两个用户可能同时到达两个登录服务器)

请帮忙。我已经走投无路了。提前谢谢你。

【问题讨论】:

  • 我认为答案主要取决于您使用的平台和使用的数据库系统。 几乎所有流行的数据库系统都支持某种形式的镜像配置起来应该不会太难。 Web 服务器大多是无状态的,这意味着它们可以很容易地关闭和打开而不会造成任何损坏。
  • 虽然高可用性对编程/应用程序有一些影响,但在 serverfault.com 上解决这个问题似乎比在 SO 上更好。
  • 也许你应该足够聪明,让你的老板相信云架构对于 99% 的应用程序/服务来说是开箱即用的可靠。一味打折云服务器是无知的,你是在试图解决一个已经解决的问题。

标签: load-balancing failover user-accounts high-availability database-replication


【解决方案1】:

我想这些要求(如果分析得当的话)本质上是不相容的,因为它们不能根据 CAP 定理工作。

如果您有多个数据中心,即使它们在附近,也会发生分区。如果发生分区,则必须丢失可用性或一致性,因为:

  • 您有一个预先确定的“主”,它会继续工作,而其他“从”DC 会失败(或只读)。这以牺牲可用性为代价来保持一致性。
  • 或者您在分区期间失去一致性(这意味着依赖于即时一致性的操作也不可用)。

据我所知,这与您的要求不符。你老板想要的显然是不可能的。他需要了解 CAP 定理。

现在,在您的应用案例中,为了方便起见,您可以决定可以改变规则并重新定义一致性或可用性,并让系统降级为不一致但暂时可接受的状态。

您可能希望让产品管理人员了解这些需求的业务案例。删除其中一些可能没问题。保持一致性是一个很好的要求,因为它使事情按照人们的预期行事——这意味着降低可用性或分区容错性。从工程的角度来看,保持一致性肯定更容易。

【讨论】:

    【解决方案2】:

    这是雇主往往不了解使用现成解决方案的好处的另一件事。如果您作为程序员甚至不知道从哪里开始,那么自己动手可能会耗费大量金钱和时间。不知道这些东西也没有错;考虑到关键组件的灾难性故障的高可用性、故障安全网络是许多人投入大量精力和金钱的一个大问题领域。为什么不利用供应商提供的服务?

    再次尝试与您的老板讨论使用现有的云提供商。

    【讨论】:

      【解决方案3】:

      您可以联系在全球不同地区拥有数据中心的可靠且经验丰富的托管服务提供商之一(我们使用 Rackspace),并根据您的要求获得他们的建议。

      【讨论】:

        【解决方案4】:

        这将需要专家的帮助、庞大的预算和认真的规划。

        我更好的选择是联系具有全球影响力的信誉良好的供应商,并选择具有可靠 SLA 支持服务的优质解决方案,并让他们根据您的需求量身定制解决方案。

        请注意,即使是像 Google、Yahoo、Microsoft 和 Amazon(仅举几例)这样的公司,也曾有过某些或其他问题,导致某些系统的某些部分对某些用户脱机。

        【讨论】:

          猜你喜欢
          • 2016-11-27
          • 1970-01-01
          • 1970-01-01
          • 2013-05-14
          • 1970-01-01
          • 2017-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多