【Spring Cloud】Zuul路由网关

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

前言

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

Zuul工作原理   

 一、过滤器机制

     zuul的核心是一系列的filters,其作用可以类比Servlet框架的Filter或AOP,它把Request route到用户处理逻辑的过程中,filter参与一些过滤处理,比如Authentication,Load Shedding等。

二、过滤器的生命周期

zuul项目搭建

新建服务zuul--microservicecloud-zuul-gateway-9527

1.引入依赖

<parent>
		<groupId>com.atguigu.springcloud</groupId>
		<artifactId>microservicecloud</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

	<artifactId>microservicecloud-zuul-gateway-9527</artifactId>

	<dependencies>
		<!-- zuul路由网关 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-zuul</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<!-- actuator监控 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<!-- hystrix容错 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-hystrix</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>
		<!-- 日常标配 -->
		<dependency>
			<groupId>com.atguigu.springcloud</groupId>
			<artifactId>microservicecloud-api</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jetty</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>
		<!-- 热部署插件 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>springloaded</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
	</dependencies>

</project>

2.添加配置文件application.yml

其中关于zuul的一些属性,prefix: /atguigu 是地址前缀的设置;mydept.path: /mydept/** 是设置访问服务时的路由配置

server: 
  port: 9527
 
spring: 
  application:
    name: microservicecloud-zuul-gateway
 
eureka: 
  client: 
    service-url: 
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka  
  instance:
    instance-id: gateway-9527.com
    prefer-ip-address: true 
 
 
zuul: 
  #ignored-services: microservicecloud-dept
  prefix: /atguigu
  ignored-services: "*"
  routes: 
    mydept.serviceId: microservicecloud-dept
    mydept.path: /mydept/**
 
info:
  app.name: atguigu-microcloud
  company.name: www.atguigu.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$

3.主启动类添加注解

@EnableZuulProxy

@SpringBootApplication
@EnableZuulProxy
public class Zuul_9527_StartSpringCloudApp
{
	public static void main(String[] args)
	{
		SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
	}
}

4.启动验证路由效果

不用路由:

http://localhost:8001/dept/get/1

启用路由: 

前缀:atguigu

mydept代替服务名称:microservicecloud-dept

http://myzuul.com:9527/atguigu/mydept/dept/get/1

小结

    zuul的路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问同意入口的基础;

    zuul的过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。

    将zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务是通过Zuul跳转后获得。

                                                                           感谢您的访问!

猜你喜欢

转载自blog.csdn.net/m18633778874/article/details/93978514