用PostgreSQL同步2个不同数据中心的NodeJS实例



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

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

然后,另一个服务可以简单地从数据库中读取数据。这是我们的用户投票获得的信息。 我的问题是:

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

我是这么想的:

  1. 正在考虑有2个PosgresSQL服务器运行,每个服务器一个数据中心。在主备模式下运行。这将启用两个数据中心中的web服务都可以从数据库,但不更新它时,主仍然活着。给我这是我唯一想要的更新。

  2. 但是另一个问题是如果NodeJS实例死了怎么办?然后我没有办法知道?我可以植入心跳系统,但是

  3. 也考虑过使用队列运行Rabbit MQ服务,但这给了我一个单点故障

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

基本上无论如何,你都需要有某种射击头部其他节点的解决方案(亲切地称为stoneith)。这可以从某种心跳程序启动,也可以手动启动。理想情况下,你有两个方面:

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

  2. 引导流量到运行节点

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

最新更新