首页 > 编程语言 > 详细

SpringCloud 客户端弹性模式

时间:2021-06-12 11:10:42      阅读:16      评论:0      收藏:0      [点我收藏+]

SpringCloud 客户端弹性模式

为什么需要客户端弹性模式

如果服务器出现了故障,应用程序能够很容易地检测到并且绕过它.

如果服务运行缓慢/性能不佳的时候,绕过它就比较困难了.

原因:

  • 服务降级可以起始于间歇性问题,最终不可逆转.

  • 一般对于远程服务调用,使用同步的方式.

    服务的调用者没有超时的概念来阻止服务调用的永久挂起.

  • 应用程序经常被设计为处理远程资源的彻底故障,而不是部分降级.

    只要服务没有彻底失败,应用程序后续还会继续调用这项服务,并且不会快速失败.

    如果服务器资源耗尽,客户端必须等待,直到要调用的资源变为可用.

所以使用一种方式:

? 远程服务器不可用或者性能不佳的时候,保护远程资源的客户端免于崩溃.

? 处理方式是让客户端快速失败,从而不再消耗服务器的数据库连接池/线程池....等的资源,也能够防止因为远程服务出 现的问题,向客户端的消费者传播.

四种客户端弹性模式

  • 客户端负载均衡模式

  • 断路器模式

  • 后备模式

  • 舱壁模式

技术分享图片

客户端负载均衡模式

客户端负载均衡,让客户端在服务发现代理中查找服务的所有实例,缓存服务器的物理位置信息.每当客户端需要调用服务的时候,负载均衡器会在它维护的服务列表中返回一个位置信息.

断路器模式

模拟电路短路器的客户端弹性模式.

  • 远程服务被调用时,断路器会监听这个调用.如果调用时间太长,断路器会中断该调用.
  • 断路器监视所有远程资源调用.如果对于某个调用的失败次数足够多,断路器会采用快速失败的策略,阻止这个服务再次被调用

后备模式

如果远程服务失效,会执行替代方案.服务不返回异常给客户端.

舱壁模式

将远程资源的调用分配到线程池中,从而降低一个性能不佳的远程服务影响整个应用程序的风险.

不同线程池之间不会互相影响.

当前服务所在的线程池饱和也不会影响其它线程池的服务.

SpringCloud 客户端弹性模式

原文:https://www.cnblogs.com/reclusiveone/p/14877648.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!