`

spring cloud分布式微服务b2b2c电子商务-Hystrix服务降级

阅读更多

电子商务社交平台源码请加企鹅求求:三五三六二四七二五九,在开始使用Spring Cloud Hystrix实现断路器之前,我们先拿之前实现的一些内容作为基础,其中包括:

 

eureka-server工程:服务注册中心,端口:1001

eureka-client工程:服务提供者,两个实例启动端口分别为2001

下面我们可以复制一下之前实现的一个服务消费者:eureka-consumer-ribbon,命名为eureka-consumer-ribbon-hystrix。下面我们开始对其进行改在:

 

第一步:pom.xml的dependencies节点中引入spring-cloud-starter-hystrix依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

 第二步:在应用主类中使用@EnableCircuitBreaker或@EnableHystrix注解开启Hystrix的使用:

@EnableCircuitBreaker
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}

 注意:这里我们还可以使用Spring Cloud应用中的@SpringCloudApplication注解来修饰应用主类,该注解的具体定义如下所示。我们可以看到该注解中包含了上我们所引用的三个注解,这也意味着一个Spring Cloud标准应用应包含服务发现以及断路器。

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

 第三步:改造服务消费方式,新增ConsumerService类,然后将在Controller中的逻辑迁移过去。最后,在为具体执行逻辑的函数上增加@HystrixCommand注解来指定服务降级方法,比如:

@RestController
public class DcController {

    @Autowired
    ConsumerService consumerService;

    @GetMapping("/consumer")
    public String dc() {
        return consumerService.consumer();
    }

    class ConsumerService {

        @Autowired
        RestTemplate restTemplate;

        @HystrixCommand(fallbackMethod = "fallback")
        public String consumer() {
            return restTemplate.getForObject("http://eureka-client/dc", String.class);
        }

        public String fallback() {
            return "fallback";
        }

    }

}

 我们来验证一下上面Hystrix带来的一些基础功能。我们先把涉及的服务都启动起来,然后访问localhost:2101/consumer,此时可以获取正常的返回,比如:Services: [eureka-consumer-ribbon-hystrix, eureka-client]。

 

为了触发服务降级逻辑,我们可以将服务提供者eureka-client的逻辑加一些延迟,比如:

@GetMapping("/dc")
public String dc() throws InterruptedException {
    Thread.sleep(5000L);
    String services = "Services: " + discoveryClient.getServices();
    System.out.println(services);
    return services;
}

 重启eureka-client之后,再尝试访问localhost:2101/consumer,此时我们将获得的返回结果为:fallback。我们从eureka-client的控制台中,可以看到服务提供方输出了原本要返回的结果,但是由于返回前延迟了5秒,而服务消费方触发了服务请求超时异常,服务消费者就通过HystrixCommand注解中指定的降级逻辑进行执行,因此该请求的结果返回了fallback。这样的机制,对自身服务起到了基础的保护,同时还为异常情况提供了自动的服务降级切换机制。

 

分享到:
评论

相关推荐

    spring-cloud-netflix-hystrix应用

    其中,Spring Cloud Netflix Hystrix是一款至关重要的组件,它为企业级应用提供了强大的容错保护,实现了服务间的熔断和降级策略,极大地提升了系统的稳定性和可靠性。 Hystrix的核心概念包括: 1. **熔断器模式**...

    spring-cloud-netflix-hystrix-dashboard-2.2.3.RELEASE.jar

    spring-cloud-netflix-hystrix-dashboard-2.2.3.RELEASE.jar

    简易的SpringCloud分布式微服务项目

    本项目名为"简易的SpringCloud分布式微服务项目",它旨在提供一个简单易懂的入门示例,帮助开发者理解如何利用SpringCloud实现微服务的搭建和管理。 1. **微服务概念**:微服务是一种软件开发方法,它提倡将单一...

    springcloud2-hystrix-feign-zuul.zip

    标题 "springcloud2-hystrix-feign-zuul.zip" 提示了我们这是一组关于Spring Cloud 2的实现,具体涉及Hystrix、Feign和Zuul组件的实践项目。Spring Cloud 是一个用于构建分布式系统的服务发现、配置管理和微服务连接...

    spring cloud降级服务-hystrix.7z

    Spring Cloud Hystrix 是一个基于 Netflix Hystrix 实现的服务降级、断路器和熔断器框架,它被广泛应用于分布式系统中的容错管理,以提高系统的稳定性和可用性。在微服务架构中,服务间通信是常见的操作,而Spring ...

    基于SpringCloud分布式微服务+微信小程序实现短视频社交app设计源码.zip

    《基于SpringCloud分布式微服务+微信小程序实现短视频社交App设计源码详解》 在现代互联网技术的推动下,短视频社交应用已经成为人们日常生活中不可或缺的一部分。本文将深入探讨如何利用SpringCloud分布式微服务...

    springcloud-ribbon-feign-hystrix-zuul-config

    在Spring Cloud框架中,"springcloud-ribbon-feign-hystrix-zuul-config"这个标题涉及到四个关键组件:Ribbon、Feign、Hystrix和Zuul,以及配置管理Config。这些组件都是构建分布式系统时常用的服务发现、客户端负载...

    SpringCloud-2.0-order-hystrix-ribbon-8011.zip

    在这个名为"SpringCloud-2.0-order-hystrix-ribbon-8011.zip"的项目中,我们主要探讨的是如何利用Hystrix实现服务间的短路保护,以及Ribbon作为客户端负载均衡器的作用。 Hystrix是Netflix开源的一款强大的断路器库...

    springcloud 分布式框架搭建

    它提供了包括服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等在内的一系列功能。在本文中,我们将深入探讨 SpringCloud 的核心组件以及如何搭建一...

    spring-cloud-netflix-hystrix原理.rar

    Spring Cloud Netflix Hystrix 是一个强大的熔断器和断路器库,旨在帮助开发者构建弹性、容错的服务架构,以应对分布式系统中的延迟和故障。Hystrix 的设计目标是隔离服务之间的调用,防止服务级联失败,从而增强...

    spring-cloud-starter-netflix-hystrix-2.1.0.RELEASE.jar

    spring-cloud-starter-netflix-hystrix-2.1.0.RELEASE

    spring-cloud-starter-netflix-hystrix-dashboard-2.1.0.RELEASE.jar

    spring-cloud-starter-netflix-hystrix-dashboard-2.1.0.RELEASE

    spring-cloud-hystrix-feign(注册中心、member、feign-order).zip

    然后,"SpringCloud-2.0-order-hystrix-feign-8012"展示了如何使用Feign和Hystrix进行服务间调用。Feign是一个声明式Web服务客户端,使得编写Web服务客户端就像编写Java接口一样简单。在Order服务中,我们可以定义一...

    SpringCloud分布式开发基础工程

    SpringCloud是基于Spring Boot实现的一套微服务框架,它提供了在分布式系统中常见的诸多功能,如服务发现、负载均衡、断路器、配置中心等。本项目“SpringCloud分布式开发基础工程”旨在帮助开发者理解并掌握Spring...

    springcloud-starter-netflix-hystrix-demo

    总的来说,“springcloud-starter-netflix-hystrix-demo”项目旨在帮助开发者理解如何在Spring Cloud环境中使用Hystrix进行服务保护,并结合Swagger实现API的调用。通过这个项目,你可以学习到微服务架构中服务治理...

    spring-cloud-netflix-hystrix-2.1.0.RELEASE.jar

    spring-cloud-netflix-hystrix-2.1.0.RELEASE

    Ideal版SpringCloud框架参考---分布式微服务架构参考

    在IT行业中,Spring Cloud是一个广泛使用的开源框架,用于构建分布式微服务系统。它基于Spring Boot,使得开发人员能够轻松地创建和管理云原生应用程序。本文将深入探讨标题" Ideal版SpringCloud框架参考---分布式微...

    standalone-hystrix-dashboard-1.5.6-all.zip

    在本案例中,我们关注的是`standalone-hystrix-dashboard-1.5.6-all.zip`,这是一个独立的Hystrix Dashboard版本,特别适合轻量级部署。 Hystrix Dashboard的核心功能在于实时展示应用中Hystrix命令(即服务调用)...

    SpringCloud微服务分布式架构开发实战-50000-05-作业及参考答案.rar.rar

    SpringCloud是Java领域中广泛使用的微服务开发工具集,它提供了众多服务发现、配置管理、负载均衡、熔断机制等组件,使得开发者能够轻松构建分布式系统。 首先,我们需要了解SpringCloud的核心组件。Eureka是服务...

Global site tag (gtag.js) - Google Analytics