如何实现高可用性?

tan*_*eng 3 failover load-balancing high-availability user-accounts database-replication

我的老板希望建立一个能够引起大陆灾难性事件的系统.他希望在美国拥有两台服务器,在亚洲拥有两台服务器(每个大陆有1台登录服务器和1台工作服务器).

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

请帮忙.我已经结束了我的智慧.先感谢您.

Mar*_*rkR 6

我想这些要求(如果分析得当)基本上是不兼容的,因为它们不能按照CAP定理工作.

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

  • 你有一个预先确定的"主人",它继续工作,其他"奴隶"DC失败(或只读).这样可以保持一致性并牺牲可用性.
  • 或者您在分区持续时间内失去一致性(这意味着依赖于立即一致性的操作也不可用).

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

现在,在您的应用案例中,您可能会认为您可以弯曲规则并重新定义一致性或可用性,以方便使用,并且系统会降级为不一致但暂时可接受的状态.

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