Hystrix: 服务熔断

news2024/11/17 10:27:06

 

 

 

开始搭建8001服务的熔断机制

创建子模块

同样拷一份pom依赖

<?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">
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.kuang</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springcloud-provider-dept-hystrix-8001</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>
        <!--    Eureka    -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

        <!--    完善监控信息    -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>


        <!--    我们需要拿到实体类 ,所以要配置api Model   -->
        <dependency>
            <groupId>com.kuang</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--   junit     -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>

        <!--     Mysql   -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--     druid   -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <!-- logback - core -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
        </dependency>
        <!--    mybatis -springboot   -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <!--   test     -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
        <!--    springboot-web    -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--  jetty  服务器    -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <!--     热部署   -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>


    </dependencies>

</project>

 

 再加一个依赖-hystrix

        <!--    hystrix    -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

Controller

package com.kuang.springcloud.controller;

import com.kuang.springcloud.pojo.Dept;
import com.kuang.springcloud.service.DeptService;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

//提供Restful服务
@RestController
public class DeptController {

    @Autowired
    private DeptService deptService;


    @GetMapping("/dept/get/{id}")
    @HystrixCommand(fallbackMethod = "hystrixGet")
    public Dept get(@PathVariable("id") Long id){
        Dept dept = deptService.queryDeptById(id);

        if (dept==null){
            throw  new RuntimeException("id=>"+id+",不存在该用户,或者信息无法找到~");
        }

        return dept;
    }

    //备选方案
    public Dept hystrixGet(@PathVariable("id") Long id){

        return new Dept().setDeptno(id).setDname("id=>"+id+",没有对应的信息,null--@Hystrix").setDb_source("no this database in MySQL");
    }

}

主启动类

package com.kuang.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient //在服务启动后自动注册到 eureka服务端
@EnableDiscoveryClient//服务发现~
@EnableCircuitBreaker//添加对熔断的支持  ,开启断路器
public class DeptApplicationProviderHystrix_8001 {
    public static void main(String[] args) {
        SpringApplication.run(DeptApplicationProviderHystrix_8001.class,args);
    }
}

 

 

 输入不存在ID

 没写服务熔断机制的就

加了这个可以显示地址,可以显示服务的ip 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/928933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Checkstyle安装、使用

Checkstyle简介 Checkstyle是SourceForge下的一个项目&#xff0c;官网&#xff1a; https://checkstyle.sourceforge.io/ 在官网有详细的说明。 Checkstyle是一个开发工具&#xff0c;可以帮助开发者自动检查java代码是否遵循编程规范&#xff0c;将开发者从枯燥繁琐的手工…

scroll-view 组件里的 scroll-into-view 属性实例

微信小程序的scroll-view组件中&#xff0c;scroll-into-view 属性可以指定滚动到指定id的位置。 <scroll-view class"content" scroll-y scroll-into-view"{{ intoIndex }}" scroll-with-animation>intoIndex 值应为某子元素id&#xff08;id不能以…

在腾讯云服务器OpenCLoudOS系统中安装svn(有图详解)

1. 安装svn yum -y install subversion 安装成功&#xff1a; 2. 创建数据根目录及仓库 mkdir -p /usr/local/svn/svnrepository 创建test仓库&#xff1a; svnadmin create /usr/local/svn/test test仓库创建成功&#xff1a; 3. 修改配置test仓库 cd /usr/local/svn/te…

JAVA坦克大战游戏v3

JAVA坦克大战游戏v3 素材 bomb_3.gif bomb_2.gif bomb_1.gif 项目结构 游戏演示 MyTankGame3.java /*** 功能:坦克游戏的5.0[]* 1.画出坦克.* 2.我的坦克可以上下左右移动* 3.可以发射子弹,子弹连发(最多5)* 4.当我的坦克击中敌人坦克时&#xff0c;敌人就消失(爆炸的效…

二叉查找树、平衡二叉树、红黑树到底怎么插入调整?不用旋转快速实现

目录 时间复杂度二叉查找树二叉查找树的插入二叉查找树的删除 平衡二叉树平衡二叉树的插入平衡二叉树的删除 红黑树红黑树的插入红黑树的删除 时间复杂度 首先二叉查找树、平衡二叉树、红黑树的时间复杂度如下所示&#xff1a; 红黑树和二叉查找树的时间复杂度是一样的&#x…

电测知识分享——雷达行业必读热点!脉冲和跳频脉冲信号的生成与解调教程来了

按照信号分类&#xff0c;雷达通常有两种基本类型&#xff1a;连续波(CW)雷达和脉冲雷达。 连续波雷达多为小型的简易雷达。在应用中有单载频连续被和调制连续波两大类。单载频连续被雷达只能测速不能测距&#xff0c;广泛用于各种测速系统&#xff0c;比如交警的测速雷达。调…

自研软件太贵、购买成品软件太死板?不怕,我这有高招

传统IT自研软件开发&#xff0c;通过编程去写代码&#xff0c;还有数据库、API、第三方基础架构等。从而造成开发周期长、难度大&#xff0c;技术人员不易于开发维护&#xff0c;因此价格及时间成本也是相对较高。后期出现了可以直接应用的成品软件&#xff0c;以及现在火热的低…

GAN原理 代码解读

模型架构 代码 数据准备 import os import time import matplotlib.pyplot as plt import numpy as np import torchvision.transforms as transforms from torch.utils.data import DataLoader from torchvision import datasets import torch.nn as nn import torch# 创建文…

docker compose iceberg 快速体验

https://iceberg.apache.org/spark-quickstart/#docker-compose port&#xff1a;8888

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-…

DPU在东数西算背景下如何赋能下一代算力基础设施 中科驭数在未来网络发展大会论道

以ChatGPT为代表的人工智能大模型的快速发展&#xff0c;对网络信息技术创新发展提出了新的挑战&#xff0c;我国东数西算重大工程也在加速布局。以确定性网络、算力网络为代表的未来网络核心技术&#xff0c;正成为决定未来经济和产业发展的关键。 8月23日&#xff0c;第七届…

学生分班查询系统的创建与使用指南

开学季&#xff0c;负责分班工作的老师们又面临一个难题&#xff1a;如何公布分班结果&#xff1f;将结果放在学校官网上可能会让很多无关人员看到&#xff0c;而不放则会导致家长们纷纷打电话来询问。那么&#xff0c;有没有一种方法可以让家长们自行查看分班结果呢&#xff1…

【SLAM】光流 - LK光流 - 金字塔分层LK光流

在SLAM的视觉里程计中&#xff0c;比较常用的就是特征点法和直接法。而直接法中&#xff0c;光流则是其中的重点内容&#xff0c;比如LSD-SLAM中就使用到了光流的方法。本文将会就光流的理论原理、公式推导进行详细的剖析&#xff0c;以帮助读者深刻地理解。 光流算法 光流是关…

每日一练 | 华为认证真题练习Day103

1、网络设备发送的IPv6报文时&#xff0c;会首先将报文长度和NTU值进行对比&#xff0c;如果大于MTU值&#xff0c;则直接丢弃。 A. 对 B. 错 2、路由器接口输出信息如下&#xff0c;则此接口可以接收哪些组播地址的数据&#xff1f; &#xff08;多选&#xff09; A. FF02::…

中国储能行业研究报告,光伏和风电领域装机量迅速增长

随着科学技术的进步&#xff0c;储能工业对我们的生活产生了深远的影响。电池技术的突破使得手机使用寿命更长&#xff0c;家庭储能系统使得能源管理更加智能和高效。人们通过对于储能的需求进行不断发展增长&#xff0c;将目光投向更环保可持续的解决问题方案。这个行业的发展…

计算机丢失msvcp140.dll是什么意思,要怎么处理呢?

今天&#xff0c;我将和大家探讨一个关于计算机的问题——“计算机丢失msvcp140.dll是什么意思&#xff0c;要怎么处理呢&#xff1f;”这个问题可能会在很多使用计算机的朋友中遇到。希望通过今天的演讲&#xff0c;能够帮助大家解决这个困扰。 首先&#xff0c;我们来了解一…

DevOps中的持续测试优势和工具

持续测试 DevOps中的持续测试是一种软件测试类型&#xff0c;它涉及在软件开发生命周期的每个阶段测试软件。持续测试的目标是通过早期测试和经常测试来评估持续交付过程的每一步的软件质量。 DevOps中的持续测试流程涉及开发人员、DevOps、QA和操作系统等利益相关者。 持续…

CC++ 常用技巧

C 中的C C 是面向过程的是把整个大程序分为一个个的子函数&#xff1b;C 是面向对象的是把整个程序划分为一个个的类。C 是完全兼容C 的&#xff0c;C 是C 的子集&#xff0c;C 是C 的超集。C 又对C 做了很多补充和提升&#xff0c;因此使用C 会比使用纯C 更方便。混用C和C&am…

《软件开发的201个原则》阅读笔记 120-161条

目录 使用有效的测试完成度标准 原则122 达成有效的测试覆盖 原则123 不要在单元测试之前集成 原则 124 测量你的软件 原则125 分析错误的原因 对错不对人 原则127 好的管理比好的技术更重要 使用恰当的方法 原则 129 不要相信你读到的一切 原则130 理解客户的优先级 原…

千人千面的分析?SpeedBI数据可视化工具也很擅长

SpeedBI数据可视化工具可以实现千人千面的分析&#xff0c;通过个性化的数据展示和交互式分析功能&#xff0c;让每个人都可以根据自己的需求和业务背景进行数据分析和可视化。 SpeedBI数据可视化工具支持多维自助分析&#xff0c;可以帮助用户深入探索和分析数据。以下是Spee…