在Spring Cloud中使用组件Zuul网关,并注册到Eureka中去

news2024/11/28 16:50:38

在上一篇中,我们搭建了Spring Cloud的父子模块,并实现了一个Eureka子模块的启动,可以通过浏览器地址去访问Eureka主页了,相信了解过的童鞋应该看到,主页上并未有任何服务去注册,那么我们就在这篇,使用zuul网关作为第一个注册到Eureka注册中心的服务吧。

在这里插入图片描述

上一篇博文地址:
使用Spring Cloud搭建一个项目框架之父子模块的创建

老样子创建一个子模块zuul的微服务模块:

在这里插入图片描述
在这里插入图片描述
这里我再次示例一次子模块的搭建方式,之后的子模块,我将只会给出相关依赖,代码和Application.yml文件了,还不知道怎么创建父子模块的,请参照本文的上一篇。

什么是zuul?

Spring Cloud Zuul是一个基于Netflix Zuul构建的API网关服务,它提供了一种简单而强大的方式来管理和路由微服务的请求流量。作为一个边缘服务,Zuul可以处理所有进入微服务架构的请求,并提供了一些关键功能,包括动态路由、负载均衡、请求过滤、请求转发等。

以下是Spring Cloud Zuul的一些主要功能:

  • 动态路由:Zuul允许根据请求的URL路径将请求动态路由不到同的微服务实例。这使得在微服务架构中进行服务发现和负载均衡变得更加灵活和可配置。

  • 负载均衡:Zuul可以与服务注册中心(如Eureka)集成,以实现负载均衡和高可用性。它可以根据负载均衡策略将请求分发到多个可用的微服务实例。

  • 请求过滤:Zuul提供了一种机制来拦截和过滤进入微服务的请求。通过定义过滤器,可以对请求进行预处理、鉴权、日志记录等操作,以满足安全性、监控和日志记录等需求。

  • 请求转发:Zuul可以将请求转发到其他微服务或外部服务。这使得在微服务架构中进行服务间通信变得更加简单和统一。

Spring Cloud Zuul是Spring Cloud生态系统中的一个重要组件,它可以帮助开发人员构建强大的微服务架构,并提供了一些关键的功能来管理和保护微服务的请求流量。

在这里提及一下,zuul在Spring Cloud的新的系列中已经逐步被Gateway取代,Gateway提供了更为高级的功能以及性能,如果你使用较为新的版本的Spring Cloud推荐使用Gateway,而不是zuul。

<?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.miaow</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>zuul</artifactId>

    <name>zuul</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!--网关依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <!--添加eureka客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

    </dependencies>
</project>

之后我们配置相关启动类文件:

@EnableEurekaClient  //作为Eureka的客户端接入进去
@EnableZuulProxy //启用zuul网关
@SpringBootApplication
public class ZuulApplication
{
    public static void main( String[] args )
    {
        SpringApplication.run(ZuulApplication.class);
    }
}

然后新建一个resources文件夹,在旗下建一个application.yml文件。

server:
  port: 2379
spring:
  application:
    name: zuul-demo

#路由前缀
zuul:
  prefix: /api

# eureka客户端注册到Eureka注册中心,切记需要启动eureka服务
eureka:
  client:
    service-url:
      defaultZone: http://localhost:1000/eureka

目录结构如下。
在这里插入图片描述
这里需要强调的事,目前是微服务阶段,那么我们既然作为Eureka的客户端在,哪肯定需要Eureka服务启动的哈,此时微服务启动就分顺序了,先Eureka服务,在Zuul服务,错了,你项目就会出现问题了。
在这里插入图片描述
我们访问:loaclhost:1000查看我们的服务是否注册到注册中心去了没有。如果有以下信息,代表这个服务,已经ok了,可以拿着直接用了,对详细配置
在这里插入图片描述
让我们来看看Spring Cloud的几大核心组件,我们已经初步搭建了哪几个模块了?Spring Cloud的五大核心组件分别如下,我采用勾选的方式代表我们操作到哪一步了!具体的操作,我们将会慢慢的完善。

  • Eureka:Eureka是一个服务注册和发现组件,它提供了服务注册、服务发现和服务治理的功能。通过Eureka,微服务可以自动注册和发现其他微服务,从而实现服务之间的通信和协作。

  • Zuul:Zuul是一个API网关组件,它可以与Eureka集成,提供了对微服务的路由、负载均衡、请求过滤和请求转发的功能。通过Zuul,开发人员可以将所有的微服务请求都通过一个入口点进行管理和保护。

  • Ribbon:Ribbon是一个客户端负载均衡组件,它可以与Eureka集成,实现对微服务实例的负载均衡和故障转移。通过Ribbon,微服务可以自动选择可用的实例,并将请求分发到这些实例上。

  • Feign:Feign是一个声明式的HTTP客户端组件,它可以与Ribbon和Eureka集成,简化微服务之间的HTTP通信。通过Feign,开发人员可以使用注解来定义HTTP请求和响应的格式,从而实现对微服务之间的调用。

  • Hystrix:Hystrix是一个容错和断路器组件,它可以与Ribbon和Feign集成,提供了对微服务的容错和故障保护的功能。通过Hystrix,开发人员可以定义断路器的行为,从而实现对微服务的故障隔离和恢复。

本系列源码地址:请点击我

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

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

相关文章

【1】一文读懂PyQt简介和环境搭建

目录 1. PyQt简介 1.1. Qt 1.2. PyQt 1.3. 关于PyQt和PySide 2. 通过pip安装PyQt5 3. 无法运行处理 4. VSCode配置PYQT插件 PyQt官网:Riverbank Computing | Introduction 1. PyQt简介 PyQt是一套Python的GUI开发框架,即图形用户界面开发框架. Python中经常使用的GUI…

NXT : 十年源头代码的回溯与展望

11月28日,区块链领域的开山鼻祖之一NXT上线十周年。十年弹指一挥间,从2013年最初基于密码学证明思想构建的NXT,到今日仍在不断拓展与优化的Ardor(NXT 2.0)生态。我们不妨利用这个契机,回溯一下这个源头级公链的创新之路。 2013年,在区块链意味着复制比特币代码并调整挖矿算法的…

Verilog基础:$time、$stime和$realtime系统函数的使用

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html $time、 $stime和$realtime这三个系统函数提供了返回当前仿真时间方法。注意&#xff0c;这里的仿真时间的最小分辨能力是由仿真时间精度决定的&#xff0c;简单来说&#xff0c;可以理解为…

在线测量大尺寸管材的测径仪有哪些?

工业高速发展的背后&#xff0c;离不开与之匹配的高端设备作为科研的支撑。品质检测仪器也在随着现代科技的发展而不断变化&#xff0c;随着科技的进步&#xff0c;各种大口径的管材、管道被生产制造出来&#xff0c;而对其外径尺寸的检测则因口径范围大而使得很少有仪器能进行…

js选中起始时间使用标准时间毫秒值计算一年后的当前少一天的日期(并考虑闰年)

js选中起始时间使用标准时间毫秒值计算一年后的当前少一天的日期 实际代码里面带入默认日期’20230301’这个特殊日期&#xff0c;因为下一年的当前日期少一天为闰年的2月会有29天&#xff0c;使用特殊值校验代码效果图 HTML部分代码 <el-button click"chengTime()&q…

多线程--11--ConcurrentHashMap

ConcurrentHashMap与HashMap等的区别 HashMap线程不安全 我们知道HashMap是线程不安全的&#xff0c;在多线程环境下&#xff0c;使用Hashmap进行put操作会引起死循环&#xff0c;导致CPU利用率接近100%&#xff0c;所以在并发情况下不能使用HashMap。 ConcurrentHashMap 主…

读书笔记-《数据结构与算法》-摘要2[冒泡排序]

冒泡排序 核心&#xff1a;冒泡&#xff0c;持续比较相邻元素&#xff0c;大的挪到后面&#xff0c;因此大的会逐步往后挪&#xff0c;故称之为冒泡。 public class BubbleSort {public static void main(String[] args) {int unsortedArray[] new int[]{6, 5, 3, 1, 8, 7, 2…

软件设计之适配器模式

类模式 我们知道插座的电压为交流电220V&#xff0c;而日常电器使用的是直流电且电压会较小&#xff0c;比如手机充电会通过插头适配器达到额定的输入电流。下面我们实现这个案例&#xff1a;将220V电压转化为5V的电压。 package Adapter.Class;public class Adapter extends …

外包干了8个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

Hello World

世界上最著名的程序 from fastapi import FastAPIapp FastAPI()app.get("/") async def root():return {"message": "Hello World"}app.get("/hello/{name}") async def say_hello(name: str):return {"message": f"…

Python实现FA萤火虫优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

通过断点调试解决node 运行js程序直接退出(没有任何报错提示)的问题

现象&#xff1a; node运行程序直接退出&#xff0c;但是从echo $?的返回值可以知道&#xff1a; 一定出现了错误&#xff0c;但是没有显示出来 解决办法&#xff1a; 1. 使用node --inspect-brk 启动程序 然后在浏览器访问chrome://inspect 然后点击inspect 进行单步调试 …

BearPi Std 板从入门到放弃 - 引气入体篇(6)(定时器TIM2)

简介 基于前面几篇, 增加定时器方面内容&#xff0c; LED定时闪动&#xff0c; 串口定时打印; 如前几篇所说&#xff0c; 使用BearPi Std板进行学习测试, 本例 开发板 &#xff1a; Bearpi Std(小熊派标准板) 主芯片: STM32L431RCT6 LED : PC13 \ 推挽输出即可 \ 高电平点亮 …

股价暴涨192%后,夏威夷控股股票还值得买入吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 这两家公司计划组建一个横跨太平洋的航空公司 阿拉斯加航空(ALK )近期宣布它已和夏威夷航空(HA)达成协议&#xff0c;将以19亿美元现金和承担债务的方式收购夏威夷控股的母公司。 但这一消息却使两家公司的股价走向了相反的…

QT 无法打开包括文件 “xxxx.h”: No such file or direcotry 提升控件后提示找不到头文件

问题复现 UI文件提升控件后&#xff0c;提示找不到头文件。 原因 Qt中的ui文件会经过moc编辑器生成ui_xxx.h头文件。 在主页面的ui文件中因为使用了提升的widget&#xff0c;所以ui的ui头文件因该包含自定义控件的头文件。但是头文件的路径可以看出已经错误了。 #include &…

vue3 vue-router的安装及配置 (一)

文章目录 一、安装二、Vue Router配置2.1 vue-router两种引入方式的区别2.2 不同的历史模式 三、router-link四、router-view Vue Router作用&#xff1a;在应用程序中实现优雅的导航和路由管理。 一、安装 注意&#xff1a;vue3安装的是vue-router4,vue2安装的是vue-router3…

Java核心知识点整理大全27-笔记(已完结)

目录 30. 云计算 30.1.1. SaaS 30.1.2. PaaS 30.1.3. IaaS 30.1.4. Docker 30.1.4.1. 概念 30.1.4.2. Namespaces 30.1.4.3. 进程(CLONE_NEWPID 实现的进程隔离) 30.1.4.4. Libnetwork 与网络隔离 30.1.4.5. 资源隔离与 CGroups 30.1.4.6. 镜像与 UnionFS 30.1.4.7.…

2024年天津财经大学珠江学院专升本专业课《管理学原理》考试大纲

天津财经大学珠江学院2024年高职升本科专业课考试《管理学原理》考试大纲 一、本大纲系天津财经大学珠江学院2024年高职升本科《管理学原理》课程考试大纲。所列考试范围出自徐碧琳主编的教材《管理学原理&#xff08;第二版&#xff09;》&#xff0c;机械工业出版社&#xff…

玻色量子计算应用奖公布!MathorCup大赛圆满落幕

2023年8月15日&#xff0c;中国优选法统筹法与经济数学研究会主办的2023年第十三届MathorCup高校数学建模挑战赛圆满落幕。为了培养优秀学子的创新意识及运用数学方法和量子计算技术解决实际问题的能力&#xff0c;推动量子计算的实际落地应用&#xff0c;北京玻色量子科技有限…

【读点论文】A Survey of Quantization Methods for Efficient Neural Network Inference

A Survey of Quantization Methods for Efficient Neural Network Inference Abstract 一旦抽象的数学计算适应了数字计算机的计算&#xff0c;在这些计算中如何有效地表示、处理和传递数值的问题就出现了。与数字表示问题密切相关的是量化问题:一组连续的实值数应该以何种方…