hystrix微服务部署

news2024/12/24 9:33:57

目录

一.启动nacos和redis

1.查看是否有nacos和redis

 二.开始项目

1.hystrix1工程(修改一下工程的注册名字)

2.运行登录nacos网站查看运行效果(默认密码nacos,nacos) 

3.开启第二个项目 hystrix2工程

4.关闭第二个项目 hystrix2工程 (模拟熔断)

三.应用hystrix

1.在第一个工程里hystrix1添加依赖

2.开启Hystrix

 3.修改第一个项目hystrix1的工具类Result

4.修改第一个项目hystrix1的控制类

 5.修改第一个项目hystrix1的application.yml文件

6.先同时启动两个项目,在postman进行测试 

3.6.1连接成功的情况

3.6.2连接失败的情况(提示) 

四.添加仪表盘(很少用到,了解)

1.在第一个工程里hystrix1添加依赖

 2.添加配置类(固定写法)

3.启动类添加注解@EnableHystrixDashboard

4启动项目,访问如下地址

​编辑 五.我的项目结构

1.第一个工程hystrix1

2.第一个工程hystrix2


 

一.启动nacos和redis

1.查看是否有nacos和redis

docker ps -a

2.启动nacos和redis 

docker start nacos
docker start redis-6379
docker ps

 二.开始项目

这里用的项目过程在我的另一个博客中OpenFeign微服务部署-CSDN博客

我是粘贴复制后重写的名字,hystrix1对应SpringSessiondemo,hystrix2对应SpringSessiondemo1,

hystrix2工程(没有代码改变)先启动之后断开(模拟宕机),

1.hystrix1工程(修改一下工程的注册名字)

2.运行登录nacos网站查看运行效果(默认密码nacos,nacos) 

3.开启第二个项目 hystrix2工程

用postman测试

4.关闭第二个项目 hystrix2工程 (模拟熔断)

三.应用hystrix

1.在第一个工程里hystrix1添加依赖

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

2.开启Hystrix

在第一个工程里hystrix1的启动类上添加开启Hystrix的注解

@EnableHystrix

 此时完成上述两个操作后,再次关闭第二个工程里hystrix2,页面也是报错,但不是“连接超时”的错误,而是“熔断类型”的错误。为了让用户体验度好一些,报错信息不暴露给用户,我们完成下面的编码。

 3.修改第一个项目hystrix1的工具类Result

package com.jr.util;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

@Data
public class Result {

    private Integer code;

    private String message;

    private Map<String, Object> map = new HashMap<>();

    private Result() {
    }

    public static Result ok() {
        Result r = new Result();
        r.setCode(ResultCode.SUCCESS.getCode());
        r.setMessage(ResultCode.SUCCESS.getMessage());
        return r;
    }

    public static Result error() {
        Result r = new Result();
        r.setCode(ResultCode.ERROR.getCode());
        r.setMessage(ResultCode.ERROR.getMessage());
        return r;
    }
    public Result setMessage(String message) {
        this.message = message;
        return this;
    }

    public Result put(String key, Object value) {
        map.put(key, value);
        return this;
    }

    public Object get(String key) {
        return map.get(key);
    }

}

 

4.修改第一个项目hystrix1的控制类

package com.jr.controller;

import com.jr.entry.UserDto;
import com.jr.service.IUserService;
import com.jr.util.Result;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.apache.catalina.servlet4preview.http.HttpServletRequest;
import org.apache.tomcat.jni.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private IUserService userService;

    @GetMapping
    @HystrixCommand(fallbackMethod = "infoHystrix") //一旦熔断了,就去执行infoHystrix方法。
    public Result info() {
        UserDto user = userService.info();
        return Result.ok().put("data", user);
    }

    public Result infoHystrix() {
        return Result.error().setMessage("被熔断了");
    }

    @GetMapping("/{id}")
    public Result id(@PathVariable String id) {  //url传值
        UserDto userDto = userService.id(id);
        return Result.ok().put("data", userDto);
    }


    @PostMapping("/add")
    public Result add(@RequestBody UserDto user) { //对象传值
        UserDto userDto = userService.add(user);
        return Result.ok().put("data", userDto);
    }
}

 5.修改第一个项目hystrix1的application.yml文件

向其中添加以下代码

feign:
  hystrix:
    enabled: true

6.先同时启动两个项目,在postman进行测试 

3.6.1连接成功的情况

3.6.2连接失败的情况(提示) 

四.添加仪表盘(很少用到,了解)

1.在第一个工程里hystrix1添加依赖

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

 2.添加配置类(固定写法)

package com.jr.config;

import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.http.HttpServlet;

@Configuration
public class HystrixConfig {

    @Bean
    public ServletRegistrationBean<HttpServlet> httpServletServletRegistrationBean() {
        ServletRegistrationBean<HttpServlet> result = new ServletRegistrationBean<>(new HystrixMetricsStreamServlet());
        result.addUrlMappings("/actuator/hystrix.stream");
        return result;
    }

}

3.启动类添加注解@EnableHystrixDashboard

4启动项目,访问如下地址

地址栏访问的地址:http://localhost:100/hystrix

地址2:http://localhost:100/actuator/hystrix.stream

点击下面的Monitor Stream

 一开始建立的时候全是0,我们需要去访问我们的项目

 五.我的项目结构

1.第一个工程hystrix1

2.第一个工程hystrix2

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

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

相关文章

硬件-示波器测开关电源-炸机经验-隔离变压器

一&#xff1a;常见疑问术语 1.1 示波器被烧了&#xff0c;测试的电源板炸了 1.2 把示波器的电源三脚的地那端拔掉&#xff1f; 1.3 隔离变压器是什么&#xff1f; 1.4 上述操作可以用差探头实现&#xff0c;差分探头是什么&#xff1f; 二&#xff1a;实际案例失误操作 2.1 炸…

MySQL基础篇 - 事务

01 事务的简介 【1】什么是事务&#xff1a;事务是一组操作集合&#xff0c;要么同时操作成功&#xff0c;要么同时操作失败。 【2】对于MySQL数据库来说默认一条SQL语句就是一个事务&#xff0c;且事务是默认自动提交的。 我们可以把多条SQL语句设置成一个事务&#xff0c;使…

pod管理及优化

一、k8s中的资源 1、资源介绍 [rootk8s-master ~]# kubectl --namespace timinglee get po No resources found in timinglee namespace. [rootk8s-master ~]# kubectl run testpod --image timinglee/nginx [rootk8s-master ~]# kubectl get pods -w NAME READY STATU…

AI大师工坊丨国庆节去哪玩?让旅游规划大师助你一臂之力

文章目录 零、写在前面一、旅游规划大师二、如何创造自己的智能体三、写在后面 零、写在前面 听说由百度文心智能体平台主办&#xff0c;万众瞩目的 AI大师工坊招募令 启动啦&#xff01; 在本期大师工坊中&#xff0c;博主开发了一款超级实用的智能体&#xff1a;旅游规划大…

MySQL 启动失败 (code=exited, status=1/FAILURE) 异常解决方案

目录 前言1. 问题描述2. 查看错误日志文件2.1 确认日志文件路径2.2 查看日志文件内容 3. 定位问题3.1 问题分析 4. 解决问题4.1 注释掉错误配置4.2 重启 MySQL 服务 5. 总结结语 前言 在日常运维和开发过程中&#xff0c;MySQL数据库的稳定运行至关重要。然而&#xff0c;MySQ…

Framebuffer学习

目录 1. Framebuffer概念2. LCD操作原理3. 源码分析3.1 打开设备3.2 获取LCD参数3.3 映射Framebuffer3.4 描点实现 基于韦东山IMX6ULL开发板学习 参考教程&#xff1a; 韦东山老师教程 1. Framebuffer概念 Framebuffer&#xff0c;可以译作“帧缓冲”&#xff0c;有时简称为fb…

“衣依”服装销售平台:Spring Boot技术实践与创新

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】 一、上篇回顾二、项目准备2.1 准备模板项目2.2 支持计时功能2.3 配置UART4引脚2.4 支持printf重定向到UART42.5 支持printf输出浮点数2.6 支持printf不带\r的换行2.7 支持ccache编译缓存 三、TFLM集成3.1 添加tfli…

记录win11 蓝屏修复

1原因&#xff1a; win11 edge 的浏览器异常 打开新窗口的广告 打不开显示网络未连接下载驱动精灵 下载驱动要开会员 果断卸载 然后发现没有卸载干净 任务管理器 搜驱动 不小心干掉了win自带的文件win提示更新 更新重启就蓝屏随便点击一个新闻页面 解决办法&#xff1a; 在…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.5-2.6

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第二周 深度卷积网络&#xff1a;实例探究&#xff08;Deep convolutional models: case studies&#xff09;2.5 网络中的网络以及 11 卷积&#xff08;Network in Network and 11 convoluti…

利用Spring Boot开发“衣依”服装销售系统

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

如何从 PC 中检索已删除的文件?从 PC 恢复已删除的照片技巧

按 Shift Delete 以后后悔&#xff1f;想要恢复已删除的照片吗&#xff1f;好吧&#xff0c;如果是这样的话&#xff0c;那么您来对地方了。在本文中&#xff0c;我们将讨论如何从 PC 中检索已删除的文件。 自从摄影的概念被提出以来&#xff0c;人们就对它着迷。早期的照片保…

YOLO11改进|上采样篇|引入DySample轻量级动态上采样器

目录 一、DySample轻量级动态上采样器1.1DySample上采样模块介绍1.2DySample核心代码 五、添加DySample上采样器5.1STEP15.2STEP25.3STEP35.4STEP4 六、yaml文件与运行6.1yaml文件6.2运行成功截图 一、DySample轻量级动态上采样器 1.1DySample上采样模块介绍 DySample是一种基…

Koa2+Vue2的简书后台管理系统

文章目录 项目实战:前(vue)后(koa)端分离1、创建简书项目2、创建数据库2.1 创建数据库2.2 连接数据库3、模型对象3.1 设计用户模块的Schema3.2 实现用户增删改查3.2.1 增加用户3.2.2 修改用户3.2.3 删除用户3.2.4 查询用户4、封装业务逻辑层5、封装CRUD6、创建Vue项目7、配…

“衣依”服装销售平台:Spring Boot技术架构剖析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

TCP四次挥手过程详解

TCP四次挥手全过程 有几点需要澄清&#xff1a; 1.首先&#xff0c;tcp四次挥手只有主动和被动方之分&#xff0c;没有客户端和服务端的概念 2.其次&#xff0c;发送报文段是tcp协议栈的行为&#xff0c;用户态调用close会陷入到内核态 3.再者&#xff0c;图中的情况前提是双…

【CKA】十、统计node节点ready状态的数量

10、统计node节点ready状态的数量 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 1、检查有多个node状态ready 2、去除有Taint和NoSchedule的节点数量 3、将结果写入到指定文件中 3. 官网地址&#xff1a; https://kubernetes.io/zh-cn/docs/reference/node/node-statu…

LeetCode[中等] 45. 跳跃游戏 II

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - 1] 的最…

在Docker中运行微服务注册中心Eureka

1、Docker简介&#xff1a; 作为开发者&#xff0c;经常遇到一个头大的问题&#xff1a;“在我机器上能运行”。而将SpringCloud微服务运行在Docker容器中&#xff0c;避免了因环境差异带来的兼容性问题&#xff0c;能够有效的解决此类问题。 通过Docker&#xff0c;开发者可…

五子棋双人对战项目(4)——匹配模块(解读代码)

目录 一、约定前后端交互接口的参数 1、websocket连接路径 2、构造请求、响应对象 二、用户在线状态管理 三、房间管理 1、房间类&#xff1a; 2、房间管理器&#xff1a; 四、匹配器(Matcher) 1、玩家实力划分 2、加入匹配队列&#xff08;add&#xff09; 3、移除…