pringCloud-Zuul服务网关[介绍及入门案例]

此文章内容转载自:pringCloud-Zuul服务网关[介绍及入门案例]

一、什么是Zuul

  • zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。zuul的例子可以参考netflix在github上的 simple webapp,可以按照netflix 在github wiki 上文档说明来进行使用。

二、解决了什么问题

20190619102253985.png

三、入门案例

1.创建项目

20190619102910138.png

2.修改pom文件

注意添加zuul的依赖

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <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>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3.修改配置

application.properties中添加服务名称,端口和Eureka注册中心的信息即可

spring.application.name=zuul-gateway
server.port=9020
#\u8BBE\u7F6E\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740\uFF0C\u6307\u5411\u53E6\u4E00\u4E2A\u6CE8\u518C\u4E2D\u5FC3
eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/

4.启动类

启动类中注意要添加zuul的注解

@SpringBootApplication
@EnableZuulProxy
public class StartZuul {

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

5.测试

我们随便启动一个前面的服务。


20190619103524930.png

四、路由规则

为了便于演示,路由案例新建一个项目来演示,内容和上面的项目是一致的。


20190619110220891.png

1.URL 指定路由

application.properties中的配置如下:

spring.application.name=zuul-gateway
server.port=9030
#\u8BBE\u7F6E\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740\uFF0C\u6307\u5411\u53E6\u4E00\u4E2A\u6CE8\u518C\u4E2D\u5FC3
eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/

zuul.routes.e-book-product-provider.path=/bobo/**
zuul.routes.e-book-product-provider.url=http://127.0.0.1:9001/
2019061911165419.png
20190619112503871.png

2.服务名称指定路由

方式一

zuul.routes.e-book-product-provider.path=/bobo/**
zuul.routes.e-book-product-provider.serviceId=e-book-product-provider

方式二

zuul.routes.e-book-product-provider.path=/bobo/**
2019061911165419.png

3.路由的排除方式

排除路由,也就是该路由器会忽悠某几个服务,即使客户端发送了请求也访问不了

zuul.ignored-services=e-book-product

如果有多个服务要排除,服务名称通过","连接

zuul.ignored-services=e-book-product,e-book-order

由于服务太多,不可能手工一个个加,故路由排除所有服务,然后针对要
路由的服务进行手工加

# 先忽略所有的请求
zuul.ignored-services=*
# 然后单独放开e-book-order的服务
zuul.routes.e-book-order.path=/bobo/**

也可以通过排除指定关键字的路径

# 排除所有含有findAll关键字的请求
zuul.ignored-patterns=/**/findAll/**
# 放开e-book-order服务,同时也会排除 findAll的请求
zuul.routes.e-book-order.path=/bobo/**

4.指定路由前缀
也就是给提前的url添加一个前缀

## http://127.0.0.1:9030/bobo/product-provider/product/findAll
zuul.prefix=/bobo
zuul.routes.e-book-product.path=/product-provider/**
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。