服务降级

 fire-and-forget 

http://m.blog.csdn.net/WangXiuli_Girl/article/details/45665723

降级

在 MongoDB 中,写操作默认通过 fire-and-forget 的模式来进行,也就是说写操作通常不关心是否成功,发完请求后客户端就认为成功了。但如果这时候 primary 进行降级操作,那么客户端并不知道这时候 primary 已经降级成为 secondary 了,客户端可能还会将后续的写操作发送给这个节点。这时候刚刚降级的这个 secondary 可以发送一个包说“我已经不是 primary 了”,但是我们上面说过了,客户端根本就无视你这个包。所以客户端根本不知道这次写入已经失败了。

对于这个问题,MongoDB开发人员已经考虑到了,解决方案是,在一个 primary 降级成为 secondary 后,它会将原来的所有连接关闭。这样客户端在下一次写入的时候就会出现 socket 错误。而客户端在发现这个错误之后,就会重新向集群获取新的 primary的地址,并将后续的写操作都往新的服务器上写入。

 

 

 

 

 

原文地址:https://www.cnblogs.com/rsapaper/p/7884266.html