前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud-Zuul服务网关[介绍及入门案例]

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

作者头像
用户4919348
发布2019-06-20 17:14:47
1.4K0
发布2019-06-20 17:14:47
举报
文章被收录于专栏:波波烤鸭波波烤鸭

一、什么是Zuul

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

在这里插入图片描述
在这里插入图片描述

二、解决了什么问题

在这里插入图片描述
在这里插入图片描述

三、入门案例

1.创建项目

  创建一个SpringBoot项目

在这里插入图片描述
在这里插入图片描述

2.修改pom文件

  注意添加zuul的依赖

代码语言:javascript
复制
	<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注册中心的信息即可

代码语言:javascript
复制
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的注解

代码语言:javascript
复制
@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中的配置如下:

代码语言:javascript
复制
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/服务处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.服务名称指定路由

方式一

代码语言:javascript
复制
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服务来处理请求

方式二

代码语言:javascript
复制
zuul.routes.e-book-product-provider.path=/bobo/**

说明: zuul.routes.e-book-product-provider.path=/bobo/** 此时routes和path之间的必须是路由的服务名称

在这里插入图片描述
在这里插入图片描述

3.路由的排除方式

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

代码语言:javascript
复制
zuul.ignored-services=e-book-product

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

代码语言:javascript
复制
zuul.ignored-services=e-book-product,e-book-order

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

代码语言:javascript
复制
# 先忽略所有的请求
zuul.ignored-services=*
# 然后单独放开e-book-order的服务
zuul.routes.e-book-order.path=/bobo/**

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

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

4.指定路由前缀

  也就是给提前的url添加一个前缀

代码语言:javascript
复制
## http://127.0.0.1:9030/bobo/product-provider/product/findAll
zuul.prefix=/bobo
zuul.routes.e-book-product.path=/product-provider/**

具体方位如下:http://localhost:9030/bobo/product-provider/product/findAll

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是Zuul
  • 二、解决了什么问题
  • 三、入门案例
    • 1.创建项目
      • 2.修改pom文件
        • 3.修改配置
          • 4.启动类
            • 5.测试
            • 四、路由规则
              • 1.URL 指定路由
                • 2.服务名称指定路由
                  • 方式一
                  • 方式二
                • 3.路由的排除方式
                  • 4.指定路由前缀
                  相关产品与服务
                  微服务引擎 TSE
                  微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档