SpringCloud:Zuul路由网关(存疑)

郎家岭伯爵 2022年06月28日 409次浏览

背景

前面我们实现了SpringCloud的Dashboard流监控,本文将继续介绍Zuul路由网关。

什么是Zuul?

ZuulSpringCloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。

Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。

Zuul网关不是必要的。是推荐使用的。

使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用。

网关有以下几个作用:

  • 统一入口:未全部为服务提供一个唯一的入口,网关起到外部和内部隔离的作用,保障了后台服务的安全性。
  • 鉴权校验:识别每个请求的权限,拒绝不符合要求的请求。
  • 动态路由:动态的将请求路由到不同的后端集群中。
  • 减少客户端与服务端的耦合:服务可以独立发展,通过网关层来做映射。

实现

springcloud-zuul-9527

创建模块

编辑pom.xml

<dependencies>

        <!-- Zuul依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>

        <!-- Hystrix依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.langjialing</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.netflix.ribbon</groupId>
            <artifactId>ribbon-loadbalancer</artifactId>
            <version>2.2.5</version>
        </dependency>


</dependencies>

编辑application.yaml

server:
  port: 9527

spring:
  application:
    name: springcloud-zuul

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  instance:
    instance-id: zuul9527.com
    prefer-ip-address: false  # 隐藏实际IP

info:
  app.name: langjialing
  url.name: 潇雅.com

修改本地hosts文件

具体操作请参考此处

127.0.0.1	eureka7001.com
127.0.0.1	eureka7002.com
127.0.0.1	eureka7003.com
127.0.0.1       www.langjialing.com

创建启动类

package com.langjialing.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class ZuulApplication_9527 {

    public static void main(String[] args){
        SpringApplication.run(ZuulApplication_9527.class);
    }
}

功能测试

启动模块。

这里本应该是通过Zuul实现路由功能的。但博主这里无法正常路由,这里作为存疑之处,后续有时间再看。

总结

本文介绍了Zuul实现路由网关。至此我们已基本将SpringCloud的组件介绍完了。

另外还有一块内容是SpringCloud Config 的分布式配置中心

由于微服务架构中服务模块比较多,每个应用的配置信息都配置在各自的application.yaml中,这会导致系统的维护会特别繁琐。

SpringCloud Config 的分布式配置中心可以实现集中配置管理,可以很好地解决服务模块的配置文件问题。

目前由于博主前面介绍的一些模块出现了比较多的存疑之处无法解决,而且博主目前处于一个换工作的阶段,没有太多时间来完善。因此SpringCloud的系列文章暂时到此为止,后续博主会继续完善SpringCloud的内容。