美文网首页
十、Hystrix解决雪崩效应2

十、Hystrix解决雪崩效应2

作者: joy_蓝蜘蛛 | 来源:发表于2018-07-20 09:32 被阅读13次

参考网址:
https://blog.csdn.net/yp090416/article/details/78017552/

链接:https://pan.baidu.com/s/1gGF2LNJREEpna8jCmiiiHw 密码:g99e

一、springboot2中Hystrix的熔断机制说明

什么情况下会触发熔断机制

1.Hystrix在调用别的服务的时候默认只有1秒回调时间。如果超过一秒就会走熔断机制。

2.代码发生错误的时候

3.请求超时

4.服务直接不可调用

5.其它

在springboot2.0中Hystrix机制是开启的,但是没有作处理。

这里有这样一个案例:
这里有服务A 服务B 用户 注册中心
调用如下图

image.png

如果我在调用服务B的代码中加上如下代码,让它的响应超过1秒.服务A就会立码走熔断机制

 try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

效果如下

image.png

二、springboot2处理熔断机制

springboot2中Hystrix的熔断机制默认是开启的。但是没有作处理。

1.配制文件application.yml中加上

image.png


2.pom.xml文件中加入

image.png

全部代码如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>con.joychen</groupId>
    <artifactId>fegin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>fegin</name>
    <description>fegindianming</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>

        </dependency>

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


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

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


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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

3.写一个处理类去现实Fegin接口类

image.png
package con.joychen.fegin.com.joychen.fallback;

import con.joychen.fegin.service.FeginMenber;

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

public class MemberFallBack implements FeginMenber {
    @Override
    public List<String> getMenberAll() {
        List<String> list = new ArrayList<>();
        list.add("服务发生异常..");
        return list;
    }
}

4.Fegin接口类加注解参数

image.png
package con.joychen.fegin.service;

import con.joychen.fegin.com.joychen.fallback.MemberFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@FeignClient(value = "manber-server",fallback = MemberFallBack.class)   //这里是注册在注册中心微服务名称
public interface FeginMenber {

    @RequestMapping("/member")      //跟据名称调用member接口会自动调用
    public List<String> getMenberAll();


}

三、启动看效果

image.png

相关文章

网友评论

      本文标题:十、Hystrix解决雪崩效应2

      本文链接:https://www.haomeiwen.com/subject/dzkfmftx.html