SpringCloud整合Zuul网关

简介

网关的作用

网关可以拦截客户端所有请求,对该请求进行权限控制,负载均衡,日志管理,接口调用监控等。

网关与过滤器的区别

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

网关和Nginx的区别

  1. 相同点:Zuul和Nginx都可以实现负载均衡,反向代理,过滤请求,实现网关效果。
  2. 不同点:Nginx采用C语音编写,Zuul采用java语音编写。Zuul负载均衡实现:采用Ribbon+Eureka实现本地负载均衡。Nginx实现负载均衡:采用服务器端实现负载均衡。

zuul网关实现反向代理

新建springcloud-zuul-gateway 模块

  • pom依赖:


  springcloud-parents
 com.baba.wlb
 1.0-SNAPSHOT
  4.0.0
 springcloud-zuul-gateway
    org.springframework.cloud
 spring-cloud-dependencies
 Finchley.M7
 pom
 import
   
  
 
 org.springframework.cloud
 spring-cloud-starter-netflix-zuul
 
 
 
 org.springframework.cloud
 spring-cloud-starter-netflix-eureka-client
  
 
 
  spring-milestones
 Spring Milestones
 https://repo.spring.io/libs-milestone
  false
   
  • 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
SpringCloud整合Zuul网关_第1张图片
再访问网关:http://localhost/api-order/getOrderByMember?name=11
SpringCloud整合Zuul网关_第2张图片
实现了反向代理!

你可能感兴趣的:(javaspringboot)