Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringCloud-Zuul服务网关[介绍及入门案例]

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

作者头像
用户4919348
发布于 2019-06-20 09:14:47
发布于 2019-06-20 09:14:47
1.5K00
代码可运行
举报
文章被收录于专栏:波波烤鸭波波烤鸭
运行总次数:0
代码可运行

一、什么是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
代码运行次数:0
运行
AI代码解释
复制
	<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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
@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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
zuul.routes.e-book-product-provider.path=/bobo/**

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

3.路由的排除方式

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
zuul.ignored-services=e-book-product

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
zuul.ignored-services=e-book-product,e-book-order

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

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

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

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

4.指定路由前缀

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringCloud-Zuul服务网关[容错Hystrix]
  zuul作为网关服务,用来分配调度其他服务的,那么难免就会出现调用的服务出现问题的请求,或者用户访问急剧增多的情况,那么此时我们的网关服务就应该具有容错能力,zuul本身也考虑到了这点,所以默认集成的有Hystrix。
用户4919348
2019/06/24
5750
SpringCloud-Zuul服务网关[容错Hystrix]
SpringCloud Sleuth入门介绍
案例代码:https://github.com/q279583842q/springcloud-e-book
用户4919348
2019/07/01
1.9K0
SpringCloud Sleuth入门介绍
SpringCloud-分布式配置中心【加密-非对称加密】
案例代码:https://github.com/q279583842q/springcloud-e-book
用户4919348
2019/07/02
6260
SpringCloud-分布式配置中心【加密-非对称加密】
SpringCloud-Zuul服务网关[高并发请求下的限流处理]
  高并发的情况肯定是实际场景中经常碰到的情况,那么这种情况下限流措施肯定是必须的,本文我们就来看看zuul中限流的处理
用户4919348
2019/06/24
2.4K0
SpringCloud-Zuul服务网关[高并发请求下的限流处理]
微服务综合案例-03-其他服务的创建
  上篇文章我们详细的介绍了product服务的创建,因为其他几个服务的创建过程是相似的,所以其他几个服务我们就快速创建了。
用户4919348
2019/06/17
5000
SpringCloud-Zuul服务网关[性能优化]
  zuul的一些默认设置如果我们不调整下,那么对整体的服务的性能还是有很大影响的,比如如果网关调用的服务处理时间比较长,那么就会出现timeout异常。
用户4919348
2019/06/24
1.9K0
SpringCloud-Zuul服务网关[性能优化]
SpringCloud-分布式配置中心【加密-对称加密】
  前面我们介绍了SpringCloud的分布式配置中心,我们将项目中的配置信息保存在git或者码云的仓库中,但是这样一些敏感信息就暴露出来了,比如数据库连接的账号密码等信息,这时我们最好能够对这些信息进行加密处理。
用户4919348
2019/07/02
8160
SpringCloud-分布式配置中心【加密-对称加密】
springcloud(十):服务网关zuul初级篇
前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,似乎一个微服务框架已经完成了。 我们还是少考虑了一个问题,外部的应用如何来访问内部各种各样的微服务呢?在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均
纯洁的微笑
2018/04/19
8770
springcloud(十):服务网关zuul初级篇
Spring Cloud 之服务网关 Zuul (一)
微服务架构体现了面向服务开发的敏捷性. 很多公司开始重构应用, 拆解服务. 出现一个新的问题: 有时候完成某个业务, 需要到不同的主机和不同的端口上面调取接口. 服务多了以后, 这是一件很麻烦的过程. 逐渐诞生了一个面向服务治理、服务编排的组件–微服务网关
芥末鱿鱼
2020/09/22
3410
SpringCloud-Zuul服务网关[自定义网关过滤器]
  zuul的核心是一系列的filters, 其作用可以类比Servlet框架的Filter,或者AOP,本文我们就来具体介绍下自定义的zuul过滤器
用户4919348
2019/06/22
8910
微服务综合案例-02-product服务创建
  上篇文章我们分析了我们要实现的案例的需求,本文我们来实现下product服务。因为要创建的项目比较多所以,本案例采用eclipse来开发。
用户4919348
2019/06/17
4860
软件架构-zuul微服务网关(上)
PS:目前通过一个zuul的一个api地址只能访问一个服务,但是在实际的生产中,通过访问一个网关需要调用后端的多个微服务,也就是客户端想访问商品的详情的页面,如果是接口的话,我需要访问后端的3个接口,现在使用了zuul我需要的客户端只请求1个api接口,却可以调用后端的3-4个接口,而不是一个一个请求调用。下次咱们一起说说聚合微服务网关。
IT架构圈
2021/11/04
3020
Spring Cloud(六)服务网关 zuul 快速入门
服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。 路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映
程序员鹏磊
2018/02/09
1.2K0
Spring Cloud(六)服务网关 zuul 快速入门
spring cloud 入门系列六:使用Zuul 实现API网关服务「建议收藏」
通过前面几次的分享,我们了解了微服务架构的几个核心设施,通过这些组件我们可以搭建简单的微服务架构系统。比如通过Spring Cloud Eureka搭建高可用的服务注册中心并实现服务的注册和发现;
全栈程序员站长
2022/07/18
4980
spring cloud 入门系列六:使用Zuul 实现API网关服务「建议收藏」
SpringCloud-Feign[入门案例]
  Feign是一种声明式、模板化的HTTP客户端(仅在 consumer 中使用)。
用户4919348
2019/06/14
2.3K0
SpringCloud-Feign[入门案例]
SpringCloud 中使用 Zuul
2. 在 application.properties 中添加, 在启动类上添加 @EnableZuulProxy 注解
北漂的我
2019/12/16
6040
SpringCloud 中使用 Zuul
SpringCloud-分布式配置中心【入门介绍】
案例代码:https://github.com/q279583842q/springcloud-e-book
用户4919348
2019/07/01
5770
SpringCloud-分布式配置中心【入门介绍】
Eureka服务注册与发现
在这个例子中,Eureka就是大型商场,就是一个服务中心。加了服务端注解@EnableEurekaServer之后就可以开启服务中心了,然后商家就是客户端,要加@EnableEurekaClient之后就可以去注册了。至于消费者,直接去消费
chenchenchen
2019/09/03
8390
Eureka服务注册与发现
SpringCloud中Zuul网关原理及其配置,看它就够了!
Zuul是spring cloud中的微服务网关。网关:是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。
JAVA葵花宝典
2020/12/15
3.3K0
SpringCloud中Zuul网关原理及其配置,看它就够了!
玩转SpringCloud(F版本) 四.路由网关(zuul)
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。
房上的猫
2019/01/24
5010
玩转SpringCloud(F版本)  四.路由网关(zuul)
推荐阅读
相关推荐
SpringCloud-Zuul服务网关[容错Hystrix]
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验