在上一篇中,我们搭建了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,开发人员可以定义断路器的行为,从而实现对微服务的故障隔离和恢复。
本系列源码地址:请点击我