我们目前有一个 NodeJS 程序从一个套接字收集数据,该套接字从我们的其他服务中获取实时信息。
然后,该数据由上述实例存储在数据库中。这个过程只是监听流。解析出对象,然后使用信息更新数据库。
然后另一个服务可以简单地从数据库中读取数据。这是我们的用户调查信息的内容。
我的问题是:
我将如何确保此代码的 2 个实例正在运行并在 2 个单独的数据中心中保持运行?因此,如果一个实例出现故障,另一个实例只会开始更新数据库。当我们修复另一个过程时。
这就是我的想法:
正在考虑运行 2 台 PosgresSQL 服务器,每个数据中心一台。以主备模式运行。这将使两个数据中心中的 Web 服务能够从数据库中读取数据,但不会在主服务器还活着时对其进行更新。给我唯一一个我想要的更新。
但另一个问题是如果 NodeJS 实例死了怎么办。那我就没有办法知道了?我可以实现心跳系统,但必须有更好的吗?
也考虑过运行带有队列的 Rabbit MQ 服务,但这给了我一个单点故障。
一直在考虑这个问题,但似乎找不到可行的架构。有什么建议吗?