我想知道我是否有2台服务器,一台是" main"服务器和另一个就在那里(两者都使用相同的后端代码)。如果主服务器崩溃并且我希望我的客户端使用其他服务器,那么我应该如何处理,这样他们就不必重新启动他们的程序或类似的东西。
我已经阅读了使用欺负算法,但我在如何处理客户端在第一个主要使用的套接字和数据(消息)方面感到迷茫服务器,并在我的第二台服务器中使用它。
答案 0 :(得分:3)
听起来你正试图实施"故障转移"在应用程序级别(例如在Java /套接字代码中)。我会劝阻你这样做。
以下是一些可能 更强大的替代方案:
实施群集Web服务器和/或群集数据库服务器:
实施代理:
SQL数据库的高可用性
最后,要回答关于在应用程序级别实现故障转移的原始问题,以下是一些示例:
附录:
答案 1 :(得分:2)
首先,如果服务器崩溃,您无法对驻留在其上的数据做任何事情(当然,直到服务器重新启动)。因此,如果您不想在发生故障时丢失数据,则应使用分布式(NoSQL?)数据存储(例如Cassandra,Redis,DynamoDB等),因为它们已经以可扩展的方式解决了这个问题。 / p>
其次,如果您的问题是'当A失败时如何将我的请求从A路由到B',您可以使用简单的(例如基于NodeJS)代理来扩展您的服务器A和B.最初,代理将“转发”所有客户端请求到A.当A崩溃时,代理检测到(可能是当它看到所有转发的请求已经过去x秒超时)并切换到服务器B. 但是,将有一个小的时间窗口(取决于您配置的x值)客户端请求将继续失败。
答案 2 :(得分:0)