开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十八)

哈喽各位同学们大家好呀,今天是开发者学院中课程“Spring Cloud微服务架构设计与开发实战”的章节二的Java Spring Cloud熔断限流 ”干货总结~是一起学习新课程吧!

课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳????

课程名称:Java Spring Cloud熔断限流

课程地址:https://developer.aliyun.com/learning/course/60/detail/1090

图谱名称:Alibaba Java 技术图谱

图谱地址:https://developer.aliyun.com/graph/java



Java Spring Cloud熔断限流



咱们这节课看一下如何实现熔断降级和限流。上节课的话我们已经讲过基于Hystrix组建的来做启动监控面板,并且进行数据流的采集,这里面也给大家讲了一些在实战过程中的一些特殊的坑,比如我们说在2.3.以后,这个版本实际是在默认的安全性方面又做了加强,不能够私自去请求监控的数据源,它要求进行特殊的数设置,你要允许监控面板去链接某个数据源才行,这个参数我们当时也演示了。 

 

  1. Java Spring Cloud熔断限流 
  2. Netflix Hystrix 
  3. Netflix发布了Hystrix熔断器框架,保护系统 
  4. 通过控制那些访问远程系统、服务和第三方库的节点 
  5. 从而对延迟和故障提供更强大的容错能力 
  6. Fallback 灾备操作,出错以后返回的值 
  7. Hystrix主要通过线程池来实现资源隔离 
  8. Hystrix的信号模式(Semaphores)来隔离资源 
  9. Hystrix支持dashboard控制面板 监控信息 
  10. Feign可以和Hystrix结合使用,也可以独立使用 
  11. Hystrix使用了命令模式,对命令对象抽象了两个抽象 
  12. 类:HystrixCommand  
  13. HystrixObservableCommand  

接下来咱们来看一下如何去做熔断,熔断是对于高并发系统来保证它的高考用性的时候,来采用了一个很重要的措施。咱们比较常见的一种场景就是淘宝的11,比如我们讲了大家如果做了一个高频化系统的话,如果你的服务器机群理论上比如说支持每秒1万的并发,你现在的话希望在双11的时候,如果流量超过1万,比如达到2万,就是说我不希望系统直接瘫痪。服务器直接全部崩溃,是这种场景的话,我们说这种结果不是我们期望的,咱们找个解决办法,就是我们说的要启用一个保护措施,熔断器模式,这里面的话也叫断路器模式b 

  1. 断路器模式 

开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十八) 

这个其实在淘宝双11的时候体现的比较明显如果各位有印象的话,参加过之前的双11的话,早期双11时候淘宝的服务器容易卡京东也一样也容易卡。为什么说白了早期的话没有见过电商公司的话是没有经历过这种如此高规模的这种并发流量,包括另外一个12306火车票网站也是一样的,现在的话加上限流,现在的话起码不会让服务瘫痪,相比谈话来说我们起码还能够去处理其中的比如说一部分的请求或者部分我可以继续处理请求。所以这种场景大家在生活中也经常看到,比如说北京的单双号限行,上海的也开始启用限行了,高峰时间限行,包括外地牌以后也不能进内环地面了,这里面其实这都是限流的一个措施。剥离一些基于某些策略,我们说剥离一些请求压力,另外来保护我们的服务器,使服务器能够以较低的一个并发来进行正常的处理请求,早期Netflix也实现了一个关键性的技术叫Hystrix 

  1. Java Spring Cloud熔断限流实战 
  2. Hystrix核心参数 

•请求最大次数 

 circuitBreaker.requestVolumeThreshold(默认值:20个请求) 

•滚动窗口 

 metrics.rollingStats.timeInMilliseconds(默认值:10秒) 

•失败百分比 

 circuitBreaker.errorThresholdPercentage(默认值:> 50%) 

 

我们Hystrix的时候有控制面板,它还可以监控面板还可以进行数据采集,这个数据采集了很重要的一点和熔断降级限流有关系,熔断以后我们说可以降低,比如说之前并发是1000,现在的话可以降到500,之前是1万我可以降到5000,起到一个限流的保护的作用。你可以基于最高并发最大并发率最大并发量达到这个时候是我开始峰值给消掉 

  1. Spring Cloud熔断限流实战 

开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十八) 

还有就是我们说的是如果某个服务出错出的特别多,我把它给断掉,你把它给断掉,请求不要再发了再发的话出更多的错误。然后比如说是出错率达到10%,还达到100%,你还达到90%的时候我开始熔断。另外的话就是我们服务接口时间过久,它的调用时间长度超过了10秒,达到10秒的时候就不要再去请求他说白了一个问题调动时间太长了,对这个客户端来说没有太大意义因为我们讲了整个的一个服务,如果调研过程的话,一定是哪个地方出了环节,比如数据库思索,或者你的缓存次数都有可能,或者说你的代码出现这个问题,比如说大面积出现,我们说这种注册的请求,可能都有这几个参数很重要。 

实战:添加设置熔断超时的时间 

开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十八) 

设置处罚超时时间3S 

开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十八) 

  1. 熔断降级 

 

开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十八) 

每个公司的服务的并发量都不一样,服务器的配置也不一样,所以限流策略一定要根据业务根据你的架构设计的目标进行灵活调整。主要目的要保护增加它的要可用性,增加了可用性高并发我们说大家都期望,但是这个不可能无限高并发,每个机器的话一定有它的一个我们说叫天花板一定会有它的一个瓶颈,所以我们在一个根据我们实际的配置压测的结果咱们可以配一个保护阀子保护阀子用于保护我们的系统在达到这个瓶颈后保护阀子会进行工作从而实现熔断。 

上一篇:历代《Java开发手册》亮点全总结,超全资料带你和260万人一起学Java! | 技术日报(10期)


下一篇:gitlab+jenkins+maven+docker持续集成(二)——maven安装配置