springCloud微服务之zuul网关集成

前面都已经把三个业务微服务建好了,这一节主要讲解如何集成网关,为什么要集成网关吗?我们有三个业务微服务,但是三个业务微服务端口号都是不一样的,如果一个个去访问那得需要记住多少端口号,而且端口号还会变化,所以会很麻烦,网关的作用就是所有请求经由网关转发,这样只需要记住网关的端口号想访问那个微服务就访问那个微服务了,这样就是十分便利的,当然也有请求认证,角色权限等都可以通过网关过滤,减少微服务请求次数,还有更多的好处可以看看官方资料都是很详细的。

这里就来讲解如何集成微服务网关zuul,这一节的内容也是比较简单的,对于后面权限认证在后期会讲解

1、创建cloud-zuul网关模块

在idea中创建模块的方法跟之前一样的,这里也就不说了,具体的项目结构如下图

微服务网关模块

2、添加网关和服务客户端依赖

在网关模块pom.xml中加入以下两个依赖

<?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>spring-cloud-study</artifactId>
        <groupId>com.apgblogs</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.apgblogs</groupId>
    <artifactId>cloud-zuul</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
    </dependencies>

</project>

3、创建包结构和网关启动类

添加启用网关注解,这里不用添加启用服务发现的注解,因为启用网关默认会启用服务发现。

网关启动类

4、添加网关配置文件追加三个业务微服务的路由映射

配置文件中主要是注册服务中心地址,和添加三个业务微服务的路由映射,然后添加了一个前缀,api,表示这些是api接口,访问的时候就是前缀加上对应的地址就可以访问了,/** 两个*号表示分级匹配,它的地址子级的子级都会匹配到。

网关配置文件

5、启动网关微服务并进行测试

启动所有微服务

网关启动

查看注册中心这些微服务是不是都已经注册上了

看来都已经注册上了

在postman中访问测试

访问网关地址:8802/前缀/路径匹配如myuser/对应微服务的地址如user
这里会发现这个地址很繁琐,myuser实际上是多余的,因为之前的微服务地址在配置文件中都是以“/”开始的,所以没有指定一个名称,在controller中却制定了user,这就导致地址匹配很繁琐,如果用了网关controller中可以不用加user的路径,当然这也没啥太大影响,后期我们会调整到一个更佳的接口路径。
访问以下地址出现结果那么就成功了,其他两个微服务的也可以用这种方式试一下
postman请求网关测试

6、文章源码地址

码云:https://gitee.com/apgblogs/springCloudStudy/tree/gateway/

至此网关就已经集成进去了,网关对于路由的配置有很多种方式,在官方文档可以看到,这里只讲解了简单的一种方式,后面实际部署的时候会把各种匹配规则和其他需求都考虑进去,比如安全,权限等等。

发表评论