越来越多的聚光灯下的noSQL数据库使用主/从模式来提供“可用性”,但它的作用(至少从我的角度来看)是在链条中创建弱链接,随时都会中断。 - 师父倒下,奴隶停止运作。
这是处理大量数据和均衡读/写的好方法,但从可用性角度来看?没那么多......
我从一些noSQL中了解到奴隶可以很容易地变成一个主人,但在大多数应用程序中这样做会很难处理。正确?
那么你们如何照顾这类东西呢?主/从数据库如何在现实世界中工作?
答案 0 :(得分:4)
这是一个相当普遍的问题;你能指定你专门谈论的数据存储吗?
我一直在使用MongoDB,它非常优雅地处理它; “副本集”中的每个成员(基本上是主从集群)都有资格成为主副本。在连接到副本集时,该集将告知连接客户端有关集合中的每个成员。如果集合中的主服务器脱机,则从服务器将自动选择新主服务器,并且客户端(因为它具有集合中所有节点的列表)将尝试新节点,直到它连接为止;它连接的节点将通知客户端新主服务器,客户端切换其连接。这样可以实现完全透明的主/从故障转移,而无需对应用程序进行任何更改。
对于单个连接来说这显然很好,但重新启动怎么办? MongoDB驱动程序也处理这个问题;它可以接受尝试连接的节点列表,并将连续尝试它们,直到找到要连接的节点。一旦连接,它将询问节点其主节点是谁,并在那里转发连接。
最终结果是,如果您已建立副本集,则可以有效地担心任何单个节点爆炸都会让您脱机。