服务降级

 

 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的地址,并将后续的写操作都往新的服务器上写入。

 

 

 

 

 

 

posted @ 2017-11-23 12:31  papering  阅读(218)  评论(0编辑  收藏  举报