【Server间的切换,延迟非常厉害 _分布式 】 | IT修真院·坑乎
问题已收录 Server间的切换,延迟非常厉害
我也踩过这个坑( 4 )
已统计您的踩坑,无需重复点击
回答(4)
分布式
详细描述
错误截图
编辑于2024-04-26
  • [上海|荣耀师兄]JAVA-路冰申
    1

    这是任务八,任务九的内容吧?我当时是拿quartz做的,server端服务器通过定时任务向缓存服务器发送存活报告(500ms一次),然后每次调用server远程接口之前,先去缓存服务器里面找,看看有没有对应的缓存,没有的话,可能就是挂了。然后可以设置一个最大失败次数尝试....当时做出来的效果是几乎不会影响用户正常使用,延迟在200ms以内,server服务器全挂的情况下,也能2S左右反馈错误结果(取决于最大失败次数)

    ******************************************时间分割线 2018.5.21***************************************

    突然发现我之前回答的这个问题,事实上,宕机的异常是可以被try catch到的,当时没有成功的我后来也找到了原因:不要在controller里面捕获这个异常!最近补习基础,发现controller是自带的多线程层(servlet),而线程中,一些底层的异常无法被捕获到,所以要在service或者其他模块中捕获!所以应该实现注入一个LIST或者MAP,然后通过try catch测试空接口的方式移除宕机服务器


    有余力的话可以学习zookeeper这些专门的服务治理,或者公司框架源码


    编辑于2018-05-21
  • [真传弟子]JAVA-李绍博
    0

    试试

    编辑于2018-06-23
  • [深圳|结业弟子]JAVA-杨萧
    0

    这个是任务八、任务九的内容,两个服务之间切换有这么大的一个延迟,最主要的原因是你在随机访问服务端的时候,每次都需要去加载一次配置文件,加载Bean,这个过程是非常消耗时间的。推荐的做法是,将两个服务的接口配置信息放到同一个xml配置文件里面,然后在调用类里面将这两个服务调用写成一个接口,xml配置文件里面设置成懒加载,当需要切换服务的时候,再去加载相对应的那一个服务信息,而不是加载整一个xml配置文件信息。还有一个可能是调用逻辑,这个也有可能存在点问题。

    以上是个人不成熟看法,如有不对的地方,请拍砖

    编辑于2018-10-12
  • [西安|结业弟子]JAVA-蔡凯
    0
    编辑于2024-02-26