Grails支持处理数据源失败

时间:2017-02-09 11:08:51

标签: sql-server-2008 grails datasource database-replication automatic-failover

我正在寻找grails应用程序中自动数据库故障转移的解决方案。我有两个数据库,它们位于通过WAN连接的两个不同站点上。在站点A上,我们有数据库01,它是数据库所在的同一站点上的应用程序的主数据库,它是应用程序1,而它将被视为应用程序2的其他站点上的应用程序的辅助数据库,反之亦然。

有关详细信息,请参阅下图:

Desired Database Replication and Failover Design

所以,根据上述设计:

  • 部署在站点A上的应用程序应该主要使用站点A中的数据库
  • 如果站点A的某个数据库无法访问,则站点A部署的应用程序应使用站点B的数据库(作为辅助数据库)
  • 一旦站点A的数据库出现,站点A部署的应用程序应该再次开始使用站点A的数据库(作为主数据库)

同样,它应该适用于站点B的应用程序。对于站点B的应用程序,站点B的数据库应主要(作为主数据库)和站点B的数据库(作为辅助数据库)使用。 / p>

注意:当相应站点的数据库出现时,该站点(部署它)的应用程序应该再次开始使用数据库,以避免通过WAN进行不必要的通信。

grails是否提供任何此类支持,我们可以指定两个数据源,一个作为主要数据源,另一个数据源作为辅助数据源(仅在主要数据无法访问的情况下使用)?

如果没有这样的机制,那么我们需要不断检查主数据源是否已启动&否则切换到辅助数据源似乎不合适,并且不想使用此选项。

1 个答案:

答案 0 :(得分:0)

真正的答案是不要让你的任何类型的代码处理这个,而是实现一个负载平衡器,它将相应地路由流量。虽然你可以在你自己的代码中(理论上)做到这一点,但是你提出的任何解决方案都远远不能达到实际负载均衡器能够实现故障转移的能力。

为了回答你的问题,Grails没有任何可以解决这个问题的事情。应该在应用程序之外解决此问题,而应将其作为网络/基础架构拓扑设计/实现的一部分。