雪崩效应
 我们把基础服务故障,导致上层服务故障,并且这个故障不断放大的过程,成为雪崩效应。
  雪崩效应,往往是因为服务没有做好容错造成的。
雪崩效应,往往是因为服务没有做好容错造成的。
 微服务常见容错方案
  仓壁模式
仓壁模式
 比如让controller有自己独立的线程池,线程池满了就直接拒绝请求
  断路器模式
断路器模式
 对api进行监控,设置一段时间内的错误率、错误次数。
 如果一段时间内达到预值,断路器就会打开,不去调用远程api了。
 (断路器模式设计了半开状态,远程api恢复后,断路器可以再次闭合。)
  使用Sentinel实现容错
使用Sentinel实现容错
 Sentinel是一个实现服务容错的库。
 微服务整合sentinel
 加依赖(无注解、无配置)
  服务整合Sentinel后,通过actuator/sentinel可以访问到
服务整合Sentinel后,通过actuator/sentinel可以访问到
  搭建Sentinel控制台
搭建Sentinel控制台
  登录,账户/密码 sentinel/sentinel
登录,账户/密码 sentinel/sentinel
 
 目前控制台上什么都没有,在服务配置上整合sentinel的控制台地址
目前控制台上什么都没有,在服务配置上整合sentinel的控制台地址
  调用服务后再刷新控制台,可以看到服务(sentinel和ribbon一样都是懒加载的)
调用服务后再刷新控制台,可以看到服务(sentinel和ribbon一样都是懒加载的)
 
 用@SentinelResource注解,进行限流和降级
用@SentinelResource注解,进行限流和降级
 
 可以把block/fallback抽离出业务代码,定义单独类
可以把block/fallback抽离出业务代码,定义单独类
 
 RestTemplate整合Sentinel
RestTemplate整合Sentinel
 使用@SentinelRestTemplate注解
 将注解加在服务初始化类上,就可以给RestTemplate整合Sentinel了
  写测试代码(就是使用feign之前的那段代码)
写测试代码(就是使用feign之前的那段代码)
  查看sentinel控制台->簇点电路
查看sentinel控制台->簇点电路
  多出来的两行就是@SentinelRestTemplate注解支持的。
多出来的两行就是@SentinelRestTemplate注解支持的。
 RestTemplate整合Sentinel还提供了一个开关resttemplate.sentinel.enabled
  Feign整合Sentinel
Feign整合Sentinel
 只需要添加配置 feign.sentinel.enabled = true
  Sentinel控制台结果和上面整合RestTemplate效果一下
Sentinel控制台结果和上面整合RestTemplate效果一下
  如果服务被流控了,不想抛异常,
如果服务被流控了,不想抛异常,
 可以在UserCenterFeignClient接口@FeignClient注解上指定fallback参数到指定的类上
  该类实现UserCenterFeignClient接口
该类实现UserCenterFeignClient接口
  配置sentinel流控规则,实现效果是“一个默认用户”,而不是抛异常了
配置sentinel流控规则,实现效果是“一个默认用户”,而不是抛异常了
  Sentinel使用总结
Sentinel使用总结
 



















