SpringCloud——断路器

SpringCloud学习
1.IDEA创建父子项目
2.SpringCloud——Eureka
3.SpringCloud——注册服务
4.SpringCloud——获取服务(1.Ribbon)
5.SpringCloud——获取服务(1.Feign)
6.SpringCloud——服务链路追踪
7.SpringCloud——断路器
8.SpringCloud——断路器监控
9.SpringCloud——断路器聚合监控
10.SpringCloud——网关

1.数据服务不可用之后,视图服务怎么办

首先开启eureka,data-service,feign-service。也可以讲前面说的服务链路追踪所有加入的东西删掉,防止还要开zipkin这个现在不需要的东西,如果没删的话,又没开zipkin,一些配置就不能使用

现在是开启eureka,data-service,feign-service,并访问http://localhost:8004/products 在前端上显示的数据
在这里插入图片描述

学习到这里,我们知道,视图微服务是依赖于数据微服务的。 那么当数据微服务不可用的时候,会怎么样呢? 我们主动把
ProductDataServiceApplication 关闭,然后再访问 :
http://localhost:8004/products 就会抛出如图所示的异常。
在这里插入图片描述

出现这个问题肯定是难以避免的,比如数据微服务所在的机房停电了。 但是这样的提示信息是非常不友好的,客户也看不懂这个是什么。
为了解决这个问题,我们就会引入断路器的概念。

2.断路器的概念

所谓的断路器,就是当被访问的微服务无法使用的时候,当前服务能够感知这个现象,并且提供一个备用的方案出来。
比如在这个例子里,数据微服务无法使用了,如果有了断路器,那么视图微服务就能够知道此事,并且展示给用户相关的信息。
而不会报错或者一直卡在那里~

3.pom.xml

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

4.ProductClientFeign

注解由原来的 @FeignClient(value = “PRODUCT-DATA-SERVICE”) 修改为
@FeignClient(value = “PRODUCT-DATA-SERVICE”,fallback =
ProductClientFeignHystrix.class)

这就表示,如果访问的 PRODUCT-DATA-SERVICE 不可用的话,就调用 ProductClientFeignHystrix
来进行反馈信息。

package org.example.service;

import org.example.pojo.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

@FeignClient(value = "PRODUCT-DATA-SERVICE" ,fallback = ProductClientFeignHystrix.class)
public interface ProductFeignClient {

    @GetMapping("/getProduct")
    public List<Product> listProducts();
}

5.ProductClientFeignHystrix

package org.example.service;

import org.example.pojo.Product;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class ProductClientFeignHystrix implements ProductFeignClient {
    @Override
    public List<Product> listProducts() {
        List<Product> list = new ArrayList<>();
        list.add(new Product(0,"产品数据微服务不可用",0));
        return list;
    }
}

6.application.yml

 feign:
  hystrix:
    enabled: true

开启断路器后,重启视图微服务(此时数据微服务是关的)
http://localhost:8004/products

如下可得:发现走的是断路器的实现类
在这里插入图片描述

本章详细信息请看:
https://how2j.cn/k/springcloud/springcloud-hystrix/2042.html#nowhere

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值