Spring-Cloud的Feign插件、Hystrix DashBoard监控、Sentinel替换Hystrix降级

Feign优化调用

在服务调用模块上(user-server)

1. 添加依赖

		<!--springcloud整合的openFeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2. 在feign包下创建一个接口

在这里插入图片描述
方法名和服务提供模块(order-server)暴露的API接口一样

package com.ddz.feigns;

import com.ddz.entity.Order;
import com.ddz.feigns.impl.OrderFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

@FeignClient(name = "order-server", fallback = OrderFeignClientFallback.class)
public interface OrderFeignClient {

    @GetMapping(value = "/findOrderByUser/{uid}")
    public List<Order> findOrderByUser(@PathVariable Integer uid);
}

3. 在启动类添加注解

在这里插入图片描述

4. 修改 UserServiceImpl 实现类

package com.ddz.service.impl;

import com.ddz.entity.Order;
import com.ddz.feign.OrderFeignClient;
import com.ddz.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Resource
    private OrderFeignClient orderFeignClient;
	/*  直接调用feign中的方法简化调用  */
    @Override
    public List<Order> findUserOrder(Integer uid) {
        return orderFeignClient.findOrderByUser(uid);
    }
}

Feign实现服务熔断

SpringCloud Fegin默认已为Feign整合了hystrix,所以添加Feign依赖后就不用在添加hystrix

1. 在 application.yml 配置文件中添加一个节点

在这里插入图片描述

2. 实现 feign 包下的接口

在这里插入图片描述

package com.ddz.feigns.impl;

import com.ddz.entity.Order;
import com.ddz.feigns.OrderFeignClient;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;

@Component
public class OrderFeignClientFallback implements OrderFeignClient {
    /**
     * 返回假数据方法
     */
    @Override
    public List<Order> findOrderByUser(Integer uid) {
        List<Order> list = new ArrayList<>();
        list.add(new Order(1, "Feign全局熔断", 0, 0.0));
        return list;
    }
}

3. 修改接口注解

在这里插入图片描述

搭建Hystrix DashBoard监控

1. 新建 dashboard-server 模块

在这里插入图片描述

2. 添加依赖

        <!-- hystrix -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <!-- dashboard监测仪表盘 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>

3. 创建 application.yml 配置文件

server:
  port: 7004 #端口号
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/ #,http://localhost:7002/eureka/ #添加到的eureka注册中心的地址
  instance:
    prefer-ip-address: true #在eureka地址页面中显示微服务的ip地址和端口
    instance-id: ${spring.cloud.client.ip-address}:${server.port} #设置发送心跳时间间隔
    lease-renewal-interval-in-seconds: 5 #设置没有发送心跳 微服务在eureka中保存的最大时间
    lease-expiration-duration-in-seconds: 10
spring:
  application:
    name: dashboard-server # 服务名称

4. 新建启动类并添加注解

package com.ddz;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@SpringBootApplication
@EnableHystrixDashboard//监测仪表盘
public class MyDashboardServer {
    public static void main(String[] args) {
        SpringApplication.run(MyDashboardServer.class, args);
    }
    //    spring boot 2.0 以上版本需要指定 文件路径
//    @Bean
//    public ServletRegistrationBean getServlet() {
//        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
//        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
//        registrationBean.setLoadOnStartup(1);
//        registrationBean.addUrlMappings("/hystrix.stream");
//        registrationBean.setName("HystrixMetricsStreamServlet");
//        return registrationBean;
//    }
}

spring boot 2.0 以上版本

5. 在需要监控的模块下添加依赖

        <!-- hystrix -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <!-- dashboard监测仪表盘 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>

6. 在 application.yml 下添加节点

在这里插入图片描述

management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream

7. 在启动类上添加注解

@EnableCircuitBreaker
在这里插入图片描述

8. 在需要监测的方法上添加注解

@HystrixCommand
在这里插入图片描述

9. 在浏览器访问

localhost:端口号/hystrix.stream
在这里插入图片描述
在这里插入图片描述

断路器聚合监控 Turbine

1. 在 dashboard 服务下添加依赖

        <!-- turbine监测多个 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
        </dependency>

2. 在 application.yml 下添加配置节点

在这里插入图片描述

turbine:
  app-config: user-server
  cluster-name-expression: "'default'"

3. 在启动类上添加注解

**@EnableTurbine **
在这里插入图片描述

4. 重启 dashboard 服务,在首页访问

localhost:Dashboard的端口/turbine.stream
在这里插入图片描述

监测多个方法
在这里插入图片描述

Sentinel替换Hystrix熔断

1. 下载jar包

链接:https://github.com/alibaba/Sentinel/releases/download/1.6.3/sentinel-dashboard-1.6.3.jar

2. 在下载好的目录下进入DOS页面输入指令启动服务

java -Dserver.port=10000 -Dcsp.sentinel.dashboard.server=localhost:10000 -
Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.6.3.jar

在这里插入图片描述

3. 在网页访问http://localhost:10000/在这里插入图片描述

4. 在模块中接入控制台

I. 添加依赖

在这里插入图片描述

        <!-- sentinel依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
            <!-- spring-alibaba 大版本 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>1.5.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

II. 在 application.yml 中添加配置节点

在这里插入图片描述

III. 在实现类中添加熔断注解和假数据方法

在这里插入图片描述

IV. 在网页控制台上查看监控

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LOVE_DDZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值