【发布时间】:2013-05-02 10:18:55
【问题描述】:
我们目前有一个 NodeJS 程序从套接字收集数据,该套接字从我们的其他服务中获取实时信息。
然后,该数据由上述实例存储在数据库中。这个过程只是监听流。解析出对象,然后使用信息更新数据库。
然后另一个服务可以简单地从数据库中读取数据。这是我们的用户为获取信息而投票的内容。
我的问题是:
如何确保此代码的 2 个实例正在运行并在 2 个独立的数据中心中保持运行?因此,如果一个实例出现故障,另一个实例只会开始更新数据库。当我们修复其他进程时。
这是我的想法:
正在考虑运行 2 台 PosgresSQL 服务器,每台一台 数据中心。以主备模式运行。这将启用 两个数据中心中的 Web 服务从 数据库,但在 master 还活着的时候不更新它。给我 我想要的唯一一个更新。
但另一个问题是如果 NodeJS 实例死了怎么办。我那时 有没有办法知道?我可以实现一个心跳系统但是 一定有更好的吗?
还考虑过运行带有队列的 Rabbit MQ 服务,但这给了我一个 单点故障。
一直在考虑这个问题,但似乎找不到可行的架构。有什么建议吗?
【问题讨论】:
标签: node.js postgresql replication high-availability