SpringCloud-Finchley集成Zuul服务网关组件并实现回退

article/2025/9/19 0:05:20

1.服务网关Zuul介绍

服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。

2.为什么要用Zuul

本图摘自方志鹏的深入理解SpringCloud微服务书籍

 

3.Zuul服务网关使用的架构图示

4.实现Zuul的代码:

1.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"><modelVersion>4.0.0</modelVersion><groupId>com.xueqing.demo</groupId><artifactId>service-zuul</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>service-zuul</name><description>Demo project for Spring Boot</description><parent><groupId>com.xueqing.demo</groupId><artifactId>springcloud1</artifactId><version>1.0-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.46</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.SpringBoot启动类开启Zuul注解

package com.xueqing.demo.servicezuul;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableZuulProxy
public class ServiceZuulApplication {public static void main(String[] args) {SpringApplication.run(ServiceZuulApplication.class, args);}
}

3.实现FallbackProvider接口重写两个方法

package com.xueqing.demo.servicezuul;import com.alibaba.fastjson.JSONObject;
import org.springframework.cloud.netflix.zuul.filters.route.FallbackProvider;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Component;import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;@Component
public class MyProvinder implements FallbackProvider {@Overridepublic String getRoute() {return "*";//api服务id,如果需要所有调用都支持回退,则return "*"或return null}/*** 如果请求用户服务失败,返回什么信息给消费者客户端*/@Overridepublic ClientHttpResponse fallbackResponse(String route, Throwable cause) {return new ClientHttpResponse(){@Overridepublic InputStream getBody() throws IOException {JSONObject r = new JSONObject();r.put("state", "9999");r.put("msg", "系统错误,请求失败");return new ByteArrayInputStream(r.toJSONString().getBytes("UTF-8"));}@Overridepublic HttpHeaders getHeaders() {HttpHeaders headers = new HttpHeaders();//和body中的内容编码一致,否则容易乱码headers.setContentType(MediaType.APPLICATION_JSON_UTF8);return headers;}/*** 网关向api服务请求是失败了,但是消费者客户端向网关发起的请求是OK的,* 不应该把api的404,500等问题抛给客户端* 网关和api服务集群对于客户端来说是黑盒子*/@Overridepublic HttpStatus getStatusCode() throws IOException {return HttpStatus.OK;}@Overridepublic int getRawStatusCode() throws IOException {return HttpStatus.OK.value();}@Overridepublic String getStatusText() throws IOException {return HttpStatus.OK.getReasonPhrase();}@Overridepublic void close() {}};}}

 


http://chatgpt.dhexx.cn/article/17Mhn50u.shtml

相关文章

数控机床设备物联网远程控制解决方案

数控机床设备应用物联网技术方案实现远程监控管理背景 数控机床设备利用先进的计算机和网络技术进行设备物联网。利用计算机硬件、软件、网络设备通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新和维护,以战略竟优、提高效率为目的,支持高层决策、中层管理…

远程控制树莓派

一、局域网 1. 让树莓派连上手机热点或wifi 将空白的ssh文件放入树莓派SD卡的boot盘 手动创建一个空白记事本.txt文件&#xff0c;命名为ssh&#xff0c;重命名&#xff0c;删掉.txt扩展名。将这个文件放入SD卡的boot盘中。 配置wifi文件&#xff0c;放入SD卡的boot盘 用同样…

推荐一款国产远程控制软件ToDesk,轻量级,不限速,开启云办公新模式

一、远程办公新时代 前段时间&#xff0c;我们公司使用的向日葵远程控制竟然崩了&#xff0c;导致无法登录&#xff0c;当时以为是公司网络出问题了&#xff0c;结果并妹有。后来就看到官方回应说&#xff0c;因为大量用户涌入导致服务器宕机了&#xff01; 不管你们信不信&a…

远程控制电脑

任意网络环境下的设备远程控制任意网络环境下的设备 对于远程操控电脑已经不是什么难的事情了&#xff0c;但是对于有的操作方法其实还是有难度的&#xff0c;今天我就介绍一下如何远程控制电脑。 1、远程控制的好处 远程控制的好处那就多了&#xff0c;不管你是学生还是…

企业如何实现IoT物联网远程控制

在IoT物联网革命中&#xff0c;一切都正在变得智能化&#xff0c;因此也可以称其为连接设备的革命。如今&#xff0c;物联网采用信息化技术手段&#xff0c;促进了人类生活和生产服务的全面升级&#xff0c;从智能家居硬件、智能穿戴、智能交通、智能医疗、智能车载、嵌入式开发…

服务器如何开启远程控制,远程控制命令设置方法介绍

大家在长时间的使用电脑以后,电脑就会出现一些毛病,这个时候人们都会给电脑维修工打电话亲上 门 儿服务,而大家都知道上门儿服务费用是非常的高的。但是远程控制出现就解决了这个问题,大家可以通过网络工程师对自己电脑进行远程控制,从而实现修理电脑的目的。但是有非常多…

快速实现远程控制Android手机

直接在web端或者手机端远程控制其他手机&#xff0c;想想都刺激&#xff0c;于是在google上一阵狂搜&#xff0c;发现很多方案都要root手机&#xff0c;直接pass&#xff0c;还有的方案需要写大量看不懂的代码&#xff0c;pass。最近一直在研究的冰狐智能辅助平台出了一个远程控…

内网远程控制安卓设备软件推荐

有些企业需要在内网环境远程控制安卓设备&#xff0c;实现批量维护安卓设备等需求。有什么软件或者解决方案&#xff0c;可以实现内网远程控制安卓设备呢&#xff1f; 这个问题要分两个情况解决&#xff0c;看你能不能走外网。如果IT和安卓设备属于同一个局域网&#xff0c;但…

向日葵远程控制的使用方法

1. 首先在办公电脑上下载安装向日葵远程控制端&#xff0c;注册账号&#xff0c;记录保存“允许控制本机”的“本机识别码”和“本机验证码”&#xff0c;并设置“开机自动启动”&#xff0c;保持向日葵的开启状态&#xff1b; 2. 在家用电脑上下载安装向日葵远程控制端&#…

远程控制工具哪个好?向日葵VS ToDesk,安卓移动设备远程操控哪个更好用?

现如今&#xff0c;科技的发展&#xff0c;使得手机的功能也越来越智能化&#xff0c;可有些小伙伴对智能化手机有许多不会操作的地方&#xff0c;这时&#xff0c;就可以利用远程手机软件&#xff0c;来请求别人的远程帮助。或者&#xff0c;当我们的手机丢失了&#xff0c;也…

计算机远程控制阀门开启,阀门远程控制系统

原标题&#xff1a; 阀门远程控制系统 一、系统概述 阀门远程监控系统以无线方式通过云服务中心发出指令来控制放置远端的(如野外、地下管网等)电动阀们设备&#xff0c;从而实现电动阀门的开关&#xff0c;并将阀门的开关状态、工作状态、设备是否在线、历史数据查询等信息反馈…

如何免ROOT,实现安卓设备远程控制?

关于远控移动设备&#xff0c;小编经常收到一些疑问&#xff0c;最常见的就是远控安卓必须root吗&#xff1f; 那必须不是啊&#xff01;无需root&#xff0c;远控安卓一样有的是办法&#xff01; 今天小编就带大家来看一下如何轻松解决免root&#xff0c;远控安卓手机的办法…

android远程管理Windows,使用Android、IOS设备远程控制Windows系统

大家都知道&#xff0c;Windows支持远程控制功能&#xff0c;可在同一局域网内连接控制电脑&#xff0c;借助RD网关还可以在互联网里自由连接控制其它内网中的某台电脑。微软其实针对Android、IOS、Mac等系统都推出了RD客户端软件。 (IOS、Mac版在App Store中搜索下载) 1. 首先…

5G工业网关的设备远程控制应用有哪些?

综合利用5G、自动控制、边缘计算等技术&#xff0c; 建设或升级设备操控系统&#xff0c;通过在工业设备、摄像头、传感器等数据采集终端上部署乾元通聚合路由等工业网关设备&#xff0c;实现工业设备与各类数据采集终端的网络化&#xff0c;设备操控员可以通过5G网络远程实时获…

thingsboard+ESP8266+MQTT实现设备远程控制

简介&#xff1a; 本次主要想实现功能&#xff1a;thingsboard平台远程控制设备 设备&#xff08;ESP8266上的灯作为一台设备&#xff0c;模拟控制灯的开关&#xff09; 指令传输通过thingsboard平台集成的MQTT协议 利用thingsboard仪表盘库的一个控制组件模拟发送指令来控制我…

工业物联网数控机床设备远程控制整体解决方案

1、数控机床设备是复杂性的工业机器&#xff0c;机械制造、计算机、液压、传感、信息处理、光机电等技术的机电一体化产品。 2、数控机床设备的故障会严重阻碍着生产的效率和质量&#xff0c;目前先进的数控系统均配有完备的远程通信接口和与上位机进行通信的完整协议&#xff…

plc设备远程控制系统

采用工业互联网与大数据分析技术,实时监控异地设备运行状态,为设备提供定制化的响应式服务,包括设备的智能分析诊断、预测性维护、节能管理、空中升级和远程作业指导等,减少因设备意外停车引起的生产停滞,提高设备利用率,为设备健康与安全高效生产保驾护航。 实时监控设…

如何远程控制电脑?3个方法轻松搞定!

案例&#xff1a;如何远程控制电脑&#xff1f; 【我不想时时刻刻都带着自己的电脑&#xff0c;听朋友说可以远程电脑。有没有大神分享一下具体的操作方法&#xff1f;感谢&#xff01;】 随着科技的不断进步&#xff0c;远程控制电脑已经不再是一件难以实现的事情。如今&…

几种远程控制方式

之前有一种想法&#xff0c;就是可以利用完善的手机移动通信网络进行远程控制&#xff0c; 在思考的过程中又想到几种远程控制的方案 硬件&#xff1a;家里要有电脑、下位机、多台摄像头 、&#xff08;如果可以有一台小车&#xff0c;可以让小车载着摄像头按程序定时到处拍照…

远程控制三层设备

一、三层设备配置IP 1、三层设备接口默认是关闭状态需要手动开启 2、给三层设备配置ip地址 Router(config)#int g0/1 切换到g0接口 Router(config-if)#ip add 192.168.0.254 255.255.255.0 配置ip子网掩码 Router(config-if)#no shut 手动开启接口3…