简介
网关的作用
网关能够拦挡客户端所有申请,对该申请进行权限管制,负载平衡,日志治理,接口调用监控等。
网关与过滤器的区别
过滤器是拦挡单个tomcat服务器进申请,网关是拦挡整个微服务所有申请。
网关和Nginx的区别
- 相同点:Zuul和Nginx都能够实现负载平衡,反向代理,过滤申请,实现网关成果。
- 不同点:Nginx采纳C语音编写,Zuul采纳java语音编写。Zuul负载平衡实现:采纳Ribbon+Eureka实现本地负载平衡。Nginx实现负载平衡:采纳服务器端实现负载平衡。
zuul网关实现反向代理
新建springcloud-zuul-gateway 模块
- pom依赖:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>springcloud-parents</artifactId> <groupId>com.baba.wlb</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>springcloud-zuul-gateway</artifactId> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.M7</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--SpringCloud zuul 网关--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> <!--SpringCloud Eureka 客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies> <!--留神:这里必须增加,否则各种依赖有问题--> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/libs-milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories></project>
- application.yml 配置文件
## api网关端口号server: port: 80## 服务注册名称spring: application: name: server-zuuleureka: client: service-url: ##以后服务注册到Eureka服务地址 defaultZone: http://localhost:8100/eureka,http://localhost:9100/eureka register-with-eureka: true ## 须要检索服务信息 fetch-registry: truezuul: routes: ## 示意定义转发服务规定 api-a: ### 当客户端发送申请http://127.0.0.1:80/api-member结尾的,都会转发到会员服务 path: /api-member/** ### 会员服务别名 zuul默认整合ribbon,主动实现轮询成果 serviceId: app-member api-b: ### 当客户端发送申请http://127.0.0.1:80/api-order结尾的,都会转发到订单服务 path: /api-order/** ### 订单服务别名 zuul默认整合ribbon,主动实现轮询成果 serviceId: app-order
- AppGateway 启动类
package com.baba.wlb;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.netflix.zuul.EnableZuulProxy;/** * @Author wulongbo * @Date 2021/1/28 11:52 * @Version 1.0 */@SpringBootApplication@EnableEurekaClient@EnableZuulProxypublic class AppGateway { //@EnableZuulProxy 开启网关代理 public static void main(String[] args) { SpringApplication.run(AppGateway.class, args); }}
启动服务
顺次Eureka Server、Zuul网关、Member服务、Order服务
拜访订单接口:http://localhost:8200/getOrderByMember?name=11
再拜访网关:http://localhost/api-order/getOrderByMember?name=11
实现了反向代理!