关于java:SpringCloud整合Zuul网关

5次阅读

共计 2781 个字符,预计需要花费 7 分钟才能阅读完成。

简介

网关的作用

网关能够拦挡客户端所有申请,对该申请进行权限管制,负载平衡,日志治理,接口调用监控等。

网关与过滤器的区别

过滤器是拦挡单个 tomcat 服务器进申请,网关是拦挡整个微服务所有申请。

网关和 Nginx 的区别

  1. 相同点:Zuul 和 Nginx 都能够实现负载平衡,反向代理,过滤申请,实现网关成果。
  2. 不同点: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-zuul
eureka:
  client:
    service-url:
      ## 以后服务注册到 Eureka 服务地址
 defaultZone: http://localhost:8100/eureka,http://localhost:9100/eureka
    register-with-eureka: true
 ## 须要检索服务信息
 fetch-registry: true
zuul:
  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
@EnableZuulProxy
public 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

实现了反向代理!

正文完
 0