SpringCloud 分布式知识学习

@SpringCloudApplication 注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public @interface SpringCloudApplication {
}

一个注解引用三个注解,标示这是springboot应用  注册中心客户端、开启熔断器。

  

业务场景:用户中心需要调用用户服务、商品服务、优惠券服务等等,打开一次用户中心页面需要请求3个服务接口。

服务雪崩效应

用户中心依赖用户服务、商品服务、优惠券等服务。大流量打过来,用户中心不断的创建线程,远程调用三个服务。当优惠券服务(也可以其它服务)不可用时,用户中心创建线程调用优惠券服务,线程hang住一阵,直到timeout。这些阻塞的线程导致应用用户中心服务器线程资源耗尽,应用挂掉,假死。

复述一遍:依赖的下游服务不可用,在大流量环境下导致前端服务都不可用。

hystrix 提供解决方案可以解决服务雪崩问题。提供了

  • 服务熔断
  • 降级
  • 限流
  • 资源隔离
  • 运维监控

 

服务熔断

服务熔断也被称为服务过载保护。

回到上一个场景,用户中心远程调用优惠券服务,调用失败达到一定次数后断路器打开。用户中心将不发起远程调用,直接提示优惠券服务异常这样的错误信息。返回错误的响应。一段时间后,断路器会变成半开状态,如果下一个请求成功了,就关闭断路器,反之就开启断路器。

-----  这是我对服务熔断的理解,这里的一定次数在hystrix 框架中是明确的可控制的。

hystrix 关键的三个参数

hystrix.command.default.circuitBreaker.requestVolumeThreshold(当在配置时间窗口内达到此数量的失败后,进行短路。默认20个)简言之,10s内请求失败数量达到20个,断路器就会变成打开状态。
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds(短路多久以后开始尝试是否恢复,默认5s)
hystrix.command.default.circuitBreake.errorThresholdPercentage(出错百分比阈值,当达到此阈值后,开始短路。默认50%)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiguansheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值