温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SpringCloud中Zuul服务网关的示例分析

发布时间:2022-01-15 14:32:38 来源:亿速云 阅读:113 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关SpringCloud中Zuul服务网关的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  一、什么是Zuul

    zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。

    Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

    zuul的例子可以参考netflix在github上的 simple webapp,可以按照netflix 在github wiki 上文档说明来进行使用。

  二、解决了什么问题

  三、入门案例

  1.创建项目

    创建一个SpringBoot项目

  2.修改pom文件

    注意添加zuul的依赖

  org.springframework.cloud

  spring-cloud-dependencies

  Dalston.SR5

  pom

  import

  org.springframework.boot

  spring-boot-starter-web

  org.springframework.cloud

  spring-cloud-starter-eureka

  org.springframework.cloud

  spring-cloud-starter-zuul

  org.springframework.boot

  spring-boot-maven-plugin

  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.测试

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

  我这启动的是上个案例中的一个product服务,如果需要源码欢迎访问我的GitHub:https://github.com/q279583842q/SpringCloud-dpb-Demo

  直接访问:http://localhost:9001/product/findAll

  通过zuul服务网关访问:http://localhost:9020/e-book-product/product/findAll

  http://网关服务地址:网关服务端口/访问的服务的名称/访问的服务中的接口的地址

  四、路由规则

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

  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/

  说明:

  zuul.routes.e-book-product-provider.path

  zuul.routes是固定的,e-book-product-provider自定义,path是固定的

  /bobo/** 表示 请求的url地址

  zuul.routes.e-book-product-provider.url=http://127.0.0.1:9001/

  表示,当用户的请求是 http://xxx/bobo/** 路由到http://127.0.0.1:9001/服务处理

SpringCloud中Zuul服务网关的示例分析

  2.服务名称指定路由

  方式一

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

  zuul.routes.e-book-product-provider.serviceId=e-book-product-provider

  说明

  当用户请求的url是:http://xxxx/bobo/product/findAll 这种方式的时候,会调用

  zuul.routes.e-book-product-provider.serviceId=e-book-product-provider的

  e-book-product-provider服务来处理请求

  方式二

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

  说明:无锡人流多少钱 http://mobile.bhnfkyy.com/

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

  此时routes和path之间的必须是路由的服务名称

  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/**

感谢各位的阅读!关于“SpringCloud中Zuul服务网关的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI