我有一个 CRUD 网络服务,我的任务是试图找出一种方法来确保在数据库出现故障时我们不会丢失数据。每个人都知道,如果数据库出现故障,我们将无法获得“读取”,但对于特定的操作子集,我们希望确保我们不会丢失数据。
我的印象是,0MQ、RabbitMQ 或 Microsoft MQ 服务之一等服务涵盖了这一点。虽然经过几天的阅读和研究,我什至不确定我们所说的MQ服务中的消息是否包括数据库操作。然而,我 100% 确信我可以排队尽可能多的 hello world。
如果我可以使用消息队列为数据库添加一层保护,我会倾向于 Rabbit(因为它似乎会在崩溃中持续存在)但由于目标是 Microsoft SQL 服务器数据库,可能是他们的解决方案之一(例如SQL Service Broker 或 MSMQ)更合适。
我还不确定的真正基本问题是我是否在玩正确的纸牌(可以这么说)。
随着对高可用性 web 服务的渴望,如果数据库出现故障,它仍然可以运行,将 Rabbit MQ 实例放在 web 服务和数据库“之间”是否有意义?也许链中的正确链接是让 RabbitMQ 向网络服务器发送消息?
还是有其他解决方案可以实现这一目标?目前有很多关于在数据库中断或其他情况下找到卷起博客的方法的想法......但我们仍处于足够早的阶段,(至少我)不知道我是什么'我要做。
消息队列是正确的解决方案吗?