【问题标题】:Syncing 2 NodeJS instances in 2 separate data centers with PostgreSQL将 2 个独立数据中心中的 2 个 NodeJS 实例与 PostgreSQL 同步
【发布时间】:2013-05-02 10:18:55
【问题描述】:

我们目前有一个 NodeJS 程序从套接字收集数据,该套接字从我们的其他服务中获取实时信息。

然后,该数据由上述实例存储在数据库中。这个过程只是监听流。解析出对象,然后使用信息更新数据库。

然后另一个服务可以简单地从数据库中读取数据。这是我们的用户为获取信息而投票的内容。

我的问题是:

如何确保此代码的 2 个实例正在运行并在 2 个独立的数据中心中保持运行?因此,如果一个实例出现故障,另一个实例只会开始更新数据库。当我们修复其他进程时。

这是我的想法:

  1. 正在考虑运行 2 台 PosgresSQL 服务器,每台一台 数据中心。以主备模式运行。这将启用 两个数据中心中的 Web 服务从 数据库,但在 master 还活着的时候不更新它。给我 我想要的唯一一个更新。

  2. 但另一个问题是如果 NodeJS 实例死了怎么办。我那时 有没有办法知道?我可以实现一个心跳系统但是 一定有更好的吗?

  3. 还考虑过运行带有队列的 Rabbit MQ 服务,但这给了我一个 单点故障。

一直在考虑这个问题,但似乎找不到可行的架构。有什么建议吗?

【问题讨论】:

    标签: node.js postgresql replication high-availability


    【解决方案1】:

    基本上,您需要以某种方式拍摄头部中的另一个节点解决方案(亲切地称为 STONITH)。这可以从某种心跳程序或手动启动。理想情况下,您有两个方面:

    1. 射击头部的另一个节点。把它从照片里拿出来。让它停下来。

    2. 将流量引导至运行节点。

    如果我尝试这样做,我会查看几层。在某些类型的故障(我们称它们为致命故障)中,您的 nodejs 实例将启动故障转移过程然后退出。如果验证停止响应,heartbeat 将启动故障转移并终止进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多