iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringCloudHystrix服务降级限流策略详解
  • 238
分享到

SpringCloudHystrix服务降级限流策略详解

SpringCloudHystrix服务降级限流SpringCloudHystrix 2023-01-04 12:01:30 238人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录前言Hystrix简介Hystrix的使用服务降级system服务控制层System2调System降级场景服务熔断总结前言 前面说到在我们应对高并发的场景,请求量过于大的情况

前言

前面说到在我们应对高并发的场景,请求量过于大的情况下给我们服务器的压力很多,造成缓存穿透、击穿、雪崩,那么我们采用布隆过滤器,有兴趣的小伙伴可以去看看上篇文章,关于布隆过滤器的解析。Redis处理高并发之布隆过滤器

我们要从根源上解决问题,比如一个接口在同一时间内被多次请求,如果请求失败了,我们还要继续请求么,一直请求一直失败,一直的在给我们的服务器施加压力,这种情况下肯定是不行,这个时候我们就需要对接口服务提供降级策略,在服务请求达成一定失败率的情况下,就触发降级、熔断策略对服务进行保护,也可以去服务的每分钟请求次数做限制,从而保护我们的服务,给服务端减轻压力,可以更加效率去执行业务逻辑。

Hystrix简介

Hystrix 是一个用于解决分布式服务调用出现延迟、故障,在一个服务出现故障的时候,保护其他服务可以正常使用,避免整个系统出现问题,Hystrix作为开源库,以断路器的角色存在着。

Hystrix的使用

服务降级

服务超时或故障,Hystrix调用降级方法处理,首先构建两个服务,一个system服务,定义2个controller方法,一个是模拟超时的场景,一个模拟调用错误的场景,另外一个system2的服务,去模拟分布式场景下的调system服务的场景。

2F9FB80F-7D80-4685-A718-FD1419ABADC9.png

system服务控制层

@RestController
@RequestMapping("/hystrix")
@DefaultProperties(defaultFallback = "timeOutFallbackMethod")
public class HystrixController {
    @Autowired
    private IHystrixService iHystrixService;
    @GetMapping("/error")
    @HystrixCommand
    public String errORMethod() {
        int i = 10 / 0;
        return iHystrixService.fallBackMethodOk();
    }
    @GetMapping("/timeOut")
    @HystrixCommand(fallbackMethod = "timeOutFallbackMethod", commandProperties = {
            //超过2秒及服务降级
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000")
    })
    public String timeOutMethod() throws InterruptedException {
        //线程睡眠3秒
        return iHystrixService.timeOutMethod();
    }
    
    private String timeOutFallbackMethod() {
        return "服务访问失败,降级处理";
    }
}

@DefaultProperties 默认全局降级方法,在单纯只加@HystrixCommand注解的情况下,走默认的defaultFallback方法。

int i = 10 / 0; 接口异常情况下降级

C317DBCC-0E56-438C-A286-5ADF205CAE4A.png

超时降级,服务设置超时时间为2秒,调用线程睡眠3秒,超时调降级服务

AF11A118-43B1-4CAD-B04B-467E6B67B197.png

6DE5C48E-3EF2-46BE-A652-7B23FEFF12D3.png

System2调System降级场景

controller

@RestController
@AllArgsConstructor
@RequestMapping("/provider")
public class HystrixProviderController {
    @Autowired
    private HystrixService hystrixService;
    
    @GetMapping("/executeProviderMethod1")
    public String executeProviderMethod1(){
        int i =5/0;
        String result = hystrixService.errorMethod();
        return result;
    }
}

服务system feign接口,feign添加fallback,实现类是调用的降级方法。

@FeignClient(contextId = "hystrixService", value = "Lxlxxx-system", fallbackFactory = HystrixFallbackFactory.class)
public interface HystrixService {
    
    @GetMapping("/hystrix/error")
    public String errorMethod();
    
    @GetMapping("/hystrix/timeOut")
    public String timeOutMethod();
}

fallback降级方法。

@Component
@Slf4j
public class HystrixFallbackFactory implements FallbackFactory<HystrixService> {
    @Override
    public HystrixService create(Throwable cause) {
        log.error("用户服务调用失败:{}", cause.getMessage());
        return new HystrixService() {
            @Override
            public String errorMethod() {
                return "触发system 服务的降级方法";
            }
            @Override
            public String timeOutMethod() {
                return null;
            }
        };
    }
}

服务熔断

Service类里面的熔断方式,可以配置多个出发服务熔断的属性,从而更好的断路保护服务。

@Service
@Slf4j
public class HystrixServiceImpl implements IHystrixService {
    //服务熔断
    @HystrixCommand(fallbackMethod = "fallback",commandProperties = {
            @HystrixProperty(name = "circuitBreaker.enabled",value = "true"),  //是否开启断路器
            @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "5"),   //请求次数
            @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"),  //时间范围
            @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60"), //失败率达到多少后跳闸
    })
    @Override
    public String countError(Integer count){
        //模拟报错
        if (count > 0){
            throw new RuntimeException("*****count 必须大于0");
        }
        return Thread.currentThread().getName()+"\t"+"调用成功";
    }
    public String fallback(Integer count){
        return "count 必修大于0    count: " +count;
    }
}

总结

熔断、降级的方式有很多,spring cloud Hystrix 可以能更好的集成在分布式微服务架构体系上,采用注解的方式,更加方便使用,如果还有更好的服务熔断、降级策略欢迎小伙伴分享。

以上就是spring Cloud Hystrix 服务降级限流策略详解的详细内容,更多关于Spring Cloud Hystrix 服务降级限流的资料请关注编程网其它相关文章!

--结束END--

本文标题: SpringCloudHystrix服务降级限流策略详解

本文链接: https://www.lsjlt.com/news/176638.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringCloudHystrix服务降级限流策略详解
    目录前言Hystrix简介Hystrix的使用服务降级system服务控制层System2调System降级场景服务熔断总结前言 前面说到在我们应对高并发的场景,请求量过于大的情况...
    99+
    2023-01-04
    Spring Cloud Hystrix 服务降级限流 Spring Cloud Hystrix
  • SpringCloudhystrix服务降级学习笔记
    目录一、Hystrix简介1、Hystrix是什么2、Hystrix能干什么二、服务熔断1、服务熔断简介2、配置pom.xml3、配置application.yaml4、修改Cont...
    99+
    2022-11-13
    SpringCloud hystrix服务降级 SpringCloud hystrix SpringCloud 服务降级
  • SpringCloudhystrix服务降级概念介绍
    目录Hystrix初识HystrixHystrix三大概念服务降级(fallback)fallback是什么服务提供方实现服务降级服务调用方实现服务降级服务降级优化服务熔断(brea...
    99+
    2024-04-02
  • Java Redisson多策略注解限流
    目录前言自定义注解定义限流类型生成key的工具类定义aop具体逻辑前言 限流:使用Redisson的RRateLimiter进行限流多策略:map+函数式接口优化if判断 限流:使用...
    99+
    2024-04-02
  • 详解基于redis实现的四种常见的限流策略
    目录一、引言二、固定时间窗口算法三、滑动时间窗口算法四、漏桶算法五、令牌桶算法一、引言 在web开发中功能是基石,除了功能以外运维和防护就是重头菜了。因为在网站运行期间可能...
    99+
    2024-04-02
  • 微服务架构拆分策略详解
    目录1 微服务迁移准备 2 微服务颗粒的拆分策略2.1 基于业务逻辑拆分2.1.1 领域模型拆分2.1.2 用户群体拆分2.2 基于可扩展拆分 2.3 基于可靠性...
    99+
    2024-04-02
  • 阿里云服务器带宽下降 原因、影响与解决策略
    随着互联网的发展,越来越多的企业和个人选择在云端运行服务器,以满足他们对于存储、计算和网络带宽的需求。然而,最近一段时间,很多用户反馈阿里云服务器的带宽出现了下降的情况,这对他们的业务运行和用户使用体验带来了很大的影响。本文将详细分析阿里云...
    99+
    2023-11-03
    阿里 带宽 策略
  • 阿里云服务器IP分发策略详解
    阿里云服务器是一款面向企业级应用的高性能云产品,支持多种应用场景。本文将详细介绍阿里云服务器如何进行IP分发,帮助您更好地理解和使用这款产品。 在阿里云上购买服务器后,您可能会发现阿里云服务器的IP地址并不是唯一的,而是可以进行分发的。这主...
    99+
    2024-01-26
    阿里 详解 策略
  • 阿里云服务器日志保存策略详解
    阿里云服务器日志保存策略是阿里云为保障服务器运行稳定性和安全性而采取的一种重要措施。本文将详细阐述阿里云服务器日志保存策略,并提供实用的解决方案。 一、阿里云服务器日志保存策略阿里云服务器日志保存策略的主要目的是确保服务器在出现问题时,能...
    99+
    2023-11-01
    阿里 详解 策略
  • Centos7 防火墙策略rich-rule 限制ip访问-----图文详解
    目录 一、常用命令 这是通用的使用方案 二 、需求和-----策略rich-rule 重点 1、添加允许规则:add-rich-rule accept 2、移除规则 3、添加拒绝策略:reject 4重启  5.查看 三、使用说明 四、策略...
    99+
    2023-09-02
    tcp/ip 网络 服务器
  • JS前端同源策略和跨域及防抖节流详解
    目录引言jQuery中JSONP的实现防抖【重要】缓存搜索的列表1 定义全局缓存对象2:将搜索结果存储到缓存对象中3优先从缓存中获取搜索列表节流【重点】防抖和节流的区别引言 协议,域...
    99+
    2024-04-02
  • 阿里云ECS服务器限速规则解析与优化策略
    随着云计算技术的发展,越来越多的企业和个人开始使用阿里云ECS服务器进行业务部署。然而,由于各种原因,ECS服务器可能会出现限速的情况,这不仅会影响业务的正常运行,还会增加运营成本。因此,了解并掌握阿里云ECS服务器限速规则是非常重要的。本...
    99+
    2023-11-12
    阿里 规则 策略
  • 阿里云服务器降低延时性能的实践与策略
    在云计算领域,延时性能是影响服务质量的关键因素之一。本文将介绍如何通过优化阿里云服务器的配置和管理策略,有效降低服务器的延时性能。 一、阿里云服务器延时性能的定义延时性能是指服务器对用户请求的响应时间。在云计算环境中,延时性能直接影响到服务...
    99+
    2023-10-29
    阿里 性能 策略
  • Puppet 进阶策略:掌握高级技巧,释放服务器管理的无限可能
    1. 模块化管理 模块化是 Puppet 中的重要概念,它允许用户将配置代码组织成可重用的模块,提高代码的可维护性和可复用性。在模块中,用户可以定义资源及其属性,并使用 Puppet 的资源类型系统来管理这些资源。例如,要管理一台服务器...
    99+
    2024-02-12
    Puppet 高级技巧 服务器管理 自动化配置管理
  • 阿里云服务器流量需求及优化策略
    随着云计算的快速发展,越来越多的企业开始使用阿里云服务器来承载他们的业务。然而,如何有效地管理和优化阿里云服务器的流量是一个重要问题。本文将详细介绍阿里云服务器的流量需求,并提出一些优化策略。 阿里云服务器的流量需求:阿里云服务器的流量需求...
    99+
    2023-11-18
    阿里 流量 策略
  • 阿里云服务器的流量限制详解
    本文将详细介绍阿里云服务器的流量限制,包括流量类型、流量上限、流量计费方式等内容,帮助用户更好地理解和使用阿里云服务器。 在使用阿里云服务器时,了解服务器的流量限制是非常重要的。流量是指在一定时间内通过网络传输的数据量,主要包括带宽流量和数...
    99+
    2024-01-26
    阿里 详解 流量
  • 等保三级安全加固,服务器三权分立设置,mysql密码策略登录策略
    安全计算环境 1)数据库、服务器未配置口令复杂度策略。 OS 系统编辑文件/etc/pam.d/system-auth,是否存在如下配置: password requisite ...
    99+
    2023-09-07
    mysql 服务器 安全 运维 linux
  • 美国高防服务器流量清洗策略有哪些
    美国高防服务器流量清洗策略有:1、流量清洗定位,金融行业、游戏行业、电商行业、直播行业等;2、流量清洗部署方式,通过在网络出口通过旁进行挂载;3、流量清洗系统构成,攻击检测、攻击缓解和监控管理;具体分析如下:流量清洗定位主要是面向租用美国高...
    99+
    2024-04-02
  • 阿里云服务器销售策略解析
    本文将深入探讨阿里云服务器的销售策略,通过分析市场趋势和用户需求,帮助读者了解如何将阿里云服务器成功销售给潜在客户。 在当今数字化时代,云计算已成为企业业务发展的重要驱动力。作为全球领先的云计算服务提供商之一,阿里云服务器凭借其强大的性能、...
    99+
    2024-01-19
    阿里 销售策略 服务器
  • 阿里云服务器异常解决策略
    随着云计算的快速发展,阿里云服务器已经成为了很多企业和个人的首选。然而,任何服务器都可能出现各种异常,影响到业务的正常运行。本文将详细介绍如何解决阿里云服务器的异常,帮助您在遇到问题时能够迅速找出解决方案。 一、阿里云服务器异常的种类阿里云...
    99+
    2023-12-17
    阿里 异常 策略
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作