前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud Hyxtrix 初探

Spring Cloud Hyxtrix 初探

作者头像
夹胡碰
发布2021-04-25 14:36:15
3620
发布2021-04-25 14:36:15
举报
文章被收录于专栏:程序猿~程序猿~

1. Hyxtrix 作用

  • 熔断
  • 降级
  • 限流
  • 超时

2. Hyxtrix 实现模式

1) 线程池

模式采用这种实现,线程池隔离采用的是自己独立的线程池替代Web容器的线程池,来自己实现服务的熔断、限流、超时。

2) 信号量

信号量隔离采用的Web容器的线程池,自己本身相当于一个计数器,可以用来限流。

3. Hyxtrix 限流实现

  • 线程池,可以通过线程数+队列大小限制
代码语言:javascript
复制
hystrix.threadpool.default.coreSize
hystrix.threadpool.default.maxQueueSize
hystrix.threadpool.default.queueSizeRejectionThreshold
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
  • 信号量,可以设置最大并发请求数
代码语言:javascript
复制
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests

4. Hyxtrix 超时实现

  • 线程池 本身支持超时,future.get(timeout)就可以了
  • 信号量 采用HystrixTime去监测任务

Hystrix在任务启动时会启动另外一个线程HystrixTime去监测任务。如果在TimeOut时间内,任务未完成,对于线程池模式,会把执行任务的线程设置为中断;对于信号量模式,Hystrix不会对执行任务的线程做任何操作。然后再使用HystrixTime线程去执行fallback逻辑。

5. Hyxtrix 降级

就是实现fallback逻辑。

6. Hyxtrix 熔断

1.当满足一定的阈值的时候(默认10秒内超过20个请求次数) 2.当失败率达到一定的时候(默认10秒内超过50%的请求失败) 3.到达以上阈值,断路器将会开启 4.当开启的时候,所有请求都不会进行转发 5.一段时间后(默认是5秒),这个时候断路器是半开状态,会让其中一个请求进行转发。如果成功,断路器会关闭,若失败,继续开启。重复4和5。

参考

  1. hystrix线程池隔离的原理与验证
  2. Hystrix信号量模式支持超时时间吗
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Hyxtrix 作用
  • 2. Hyxtrix 实现模式
    • 1) 线程池
      • 2) 信号量
      • 3. Hyxtrix 限流实现
      • 4. Hyxtrix 超时实现
      • 5. Hyxtrix 降级
      • 6. Hyxtrix 熔断
      • 参考
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档