SpringCloud Zuul工作原理及快速使用

2021-06-30  本文已影响0人  综合楼

背景

不同的微服务一般会有不同的网络地址,而客户端可能需要调用多个服务接口才能完成一个业务需求。

若让客户端直接与各个微服务通信,会有以下问题:

  1. 客户端会多次请求不同微服务,增加了客户端复杂性。
  2. 存在跨域请求,处理相对复杂。
  3. 认证复杂,每个服务都需要独立认证。
  4. 难以重构,多个服务可能将会合并成一个或拆分成多个。


    image.png

简介

Zuul网关的作用

image.png

网关有以下几个作用:

快速使用

代码集成了eureka,config,不清楚可以先看前两篇文章。

image.png

bootstrap.yml(zuul)

spring:
  application:
    name: zuul
  cloud:
    config:
      name: zuul, common-eureka
      uri: http://config-server:8800
      fail-fast: true
      profile: dev

common-eureka-dev.yml

eureka:
  client: #客户端注册进eureka服务列表内
    service-url:
      defaultZone: http://eureka-server:8801/eureka

zuul-dev.yml

server:
  port: 8803
  context-path: /

eureka:
  instance:
    instance-id: zuul

spring:
  application:
    name: zuul
  http:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
      enabled: true

zuul:
  servlet-path: /zuul
  host:
    socket-timeout-millis: 60000
    connect-timeout-millis: 60000
    time-unit: milliseconds
  #  prefix: /api # 添加路由前缀
  routes:
    demo:
      path: /demo/**
      serviceId: demo
  #全局参数 覆盖过滤敏感头 可以用Cookie
  sensitive-headers:

pom.xml

<!-- zuul begin -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<!-- zuul end -->

BasisZuulApplication

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@EnableEurekaClient
@EnableDiscoveryClient
//开启路由功能
@EnableZuulProxy
@SpringBootApplication
public class BasisZuulApplication {
    public static void main(String[] args) { SpringApplication.run(BasisZuulApplication.class, args); }
}

demo服务与上篇SpringCloud config文中的一样

image.png

启动服务

image.png

访问地址:http://localhost:8803/zuul/demo/test/hello

image.png

上篇config介绍中的demo服务是没有经过网关直接访问的

image.png

这次是经过网关访问的

上一篇下一篇

猜你喜欢

热点阅读