在讨论容错的时候,有几种情况是需要failover的:
1)在master-slave的数据库中,写都是通过master的,如果master die了,那么会选择一个slave成为新的master。这种情况下,会不会在master fail的那一瞬间,有一些写操作已经发给master了,即使启动了新的master,那些写操作也会丢失了。这种情况下怎么确保写不丢失?
2)对于stateless application server,会通过health check发现fail的server。这里有两个问题:
a) health check会不会有延迟,如果1s发一次心跳,会很多request已经发给这个fail的server了;
b) 如何保证已经发给failed server的request不丢失?