SpringCloud详解 第五章 API网关服务zuul(一)
本章对zuul做基本的了解及基本的实现
一、Zuul应用场景
Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,类似于保安的职能,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础,Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获取其他的微服务消息,也即以后访问微服务是通过Zuul跳转后获得,最终Zuul服务还是会注册进Eureka。提供 服务代理 ,路由,过滤三大功能。
从以上这张架构图中,我们可以看到所有的请求都必须通过API GateWay服务才能到达后面的服务,这就是Zuul所需要承担起来的责任。可见他的存在是很重要的
二、构建网关
1.新建 boot 工程 修改pom文件
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR3</spring-cloud.version> </properties> <dependencyManagement> <dependencies> <dependency> <!-- SpringCloud 所有子项目 版本集中管理. 统一所有SpringCloud依赖项目的版本依赖--> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zuul --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> <version>1.4.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> <build> <plugins> <plugin><!-- SpringBoot 项目打jar包的Maven插件 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
2.修改application.yml
server: port: 9110 spring: application: name: cloud-zuul-getway #服务注册到Eureka上使用的名称 eureka: client: service-url: # 集群情况下如下,如果是单机版,只需要配置单机版Eureka地址 defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/ instance: instance-id: cloud-zuul-getway-9110 prefer-ip-address: true #访问路径显示IP地址 info: # 在Eureka上点击服务时会跳转到个404页面,可配置这里让他跳转到服务简介的一个页面,信息如下配置 app.name: wuzz company.name: www.wuzz.com build.artifactId: cloud-zuul-getway build.version: 1.0 zuul: # prefix: /wuzz #统一的公共前缀 # ignored-services: feign-server # "*"所有忽略原有服务名 routes: feign: url: http://localhost:9012/ path: /fegin/**
3.修改主启动类
@SpringBootApplication @EnableZuulProxy @EnableDiscoveryClient public class ZuulApp { private final static Logger log = LoggerFactory.getLogger(ZuulApp.class); public static void main(String[] args) { SpringApplication.run(ZuulApp.class,args); log.info("服务启动成功"); } }
启动Eureka集群,再启动 一个微服务服务提供者,再启动本开启了Zuul服务的微服务。这样就配置好了。