写这个文章的契机是我以前在面试的时候被问到的一个问题。
分布式框架主流的dubbo,springcloud。
如果是dubbo,那么注册中心一般用zookeeper。如果客户端进行了订阅(subscribe),那么在服务端下线的时候客户端会感知到对应的服务端下线了,在dubbo源码中如果你进行了订阅那么在服务端下线后,会通知到客户端,客户端在刷新本地的缓存。
如果使用的是springcloud,那么问题更加简单了。只需要在配置的时候设置从注册中心定时同步(5s 10s 15s 策略可以自己配置),同时ribbon配置重试容错机制。基本上就可以解决问题。