Zuul: 网关路由
网关通过配置里面的serviceId,也就是项目名实现请求分发
作用: 类似nginx的反向代理, 前台只需要知道 网关的ip,端口, 只要访问他即可, 剩下的请求分发给不同的微服务,交给网关来做.
网关路由,可以有一个或多个,
前台接口配置一个网关, 后台管理配置一个网关
也可以前后台使用一个网关.
白话解释: 说网关怕是理解偏了, 其实就是 做请求映射, 统一的映射, 给所有的 请求 都配置到一个服务模块中, 在由这个模块将
请求转发给不同的微服务模块. 这个转发的功能, 就是路由. 这个服务功能, 叫做网关. 但说白了, 就是对请求统一管理.
整合:
1. 创建zuul网关模块: xxx-web/xxx-manager
2. 添加pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--springcloud zuul 网关,用来将请求分发请求给微服务模块-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
3. application.yml文件配置
server:
port: 8066
spring:
application:
name: xxx-web
eureka:
client:
service-url: #Eureka客户端与Eureka服务端进行交互的地址
defaultZone: http://127.0.0.1:6868/eureka/
instance:
prefer-ip-address: true #部署到线上后,微服务之间实现跨域访问, 本地测试不加无妨,使用ip地址注册到服务中心,显示的是实例名称
zuul:
routes:
xxx-base: #网关拦截访问的模块
path: /base/** #网关拦截要访问的路径
serviceId: xxx-base #网关指定要跳转的模块名
tensquare-user: #只要是提供给前台的模块,都让网关拦截后,统一转发
path: /user/**
serviceId: xxx-user
注: xxx 表示你的工程模块名
4. 创建WebApplication.java
@SpringBootApplication
@EnableEurekaClient // 开启Eureka客户端注解可以省略
@EnableZuulProxy // 开启网关
public class ManagerApplication {
public static void main(String[] args) {
SpringApplication.run(ManagerApplication.class);
}
}
5. 访问 : localhost:8066/user/findUserById