同事让我帮忙给他做个功能,义无反顾的接受了。
功能大致这样的,用户登录的时候需要依赖服务A,服务A不稳定,而且服务A需要用户登录的信息,不能去掉服务A的业务逻辑。
可以模拟这样的场景,人家登录你的网站,输了用户名和密码,后台逻辑走到了服务A,此时A服务挂了,而你设置的超时时间为10S,太残忍了,第一个用户等待10S,第二个用户等待10S,100个用户全部等待10S,这样的网站绝对是不友好的。
解决方案1:不推荐
在java类中设置全局变量,服务A发生超时异常设置全局变量为false,根据这个状态判断是否使用服务A。
解决方案2:推荐
if(jedis.exists("key")){
服务A逻辑
}
服务A逻辑异常设置:
jedis.setex("key",5*60, "value");
解决方案3:待定
使用ZK模式
解决问题的思想最重要,以后慢慢积累。