Hystrix入门篇:如何在项目中使用断路器(一)

Hystrix简介

背景

在微服务架构的分布式系统中,众多微服务有复杂的依赖关系,这些依赖在某些情况下不可避免的会出现一些请求失败。当一个依赖由于延迟高出现阻塞,调用该依赖的服务线程就会发生排队阻塞。如果这个时候出现大量的业务流量打过来,就可能会出现服务器资源被消耗殆尽导致服务宕机。
大量请求阻塞在依赖服务导致服务宕机
对于上图的情况,每个请求都占用了系统的CPU、内存、网络等资源,如果当前服务业务请求量较高,那么所有的服务资源会被快速消耗完毕,直至应用挂掉。

对于这种情况,就需要有一个服务的保护机制——服务隔离和熔断机制,当依赖应用出现问题,不会导致下游服务出现阻塞而导致一些列的雪崩效应。

Hystrix主要功能

服务隔离

服务隔离是给每一个服务分配一定的资源,超过这个资源范围变会直接释放资源,并不会占用其他服务的资源,以达到保护其他服务的目的。
Hystrix 提供了线程和信号量两种隔离方式,以减少不同服务之间资源竞争带来的相互影响。

服务熔断

服务熔断是在高并发下,如果达到一定的极限,流量如果超过了阈值后,直接拒绝访问,从而保护当前服务。

服务降级

高并发场景下,防止某一个用户在一直等待情况,比如当超过一直的阈值时长情况,直接 fallback 返回一个相对友好的提示。

请求缓存

请求缓存保证在一次请求中多次调用同一个服务提供者接口,在 cacheKey 不变的情况下,后续调用结果都是第一次的缓存结果,而不是多次请求服务提供者,从而降低服务提供者处理重复请求的压力。

请求合并

Hystrix 的请求合并用于应对服务器的高并发场景,通过合并多个请求,减少线程的创建和使用,降低服务器请求压力,提高在高并发场景下服务的吞吐量和并发能力。

快速开始

Maven配置

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
	<version>2.2.6.RELEASE</version>
</dependency>

项目启动类添加注解 @EnableCircuitBreaker

package com.venky.hystrix;
import org.springframework
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值