SpringCloud之Zuul简单实例(springboot2.2.2RELEASE)

一. API网关简介

网关就可以对外暴露聚合API,屏蔽内部微服务的微小变动,保持整个系统的稳定性。它还可以做负载均衡,统一鉴权,协议转换,监控监测等一系列功能。

在这里插入图片描述

二. Zuul简介

Zuul是Spring Cloud全家桶中的微服务API网关。

所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul组件的核心是一系列的过滤器,这些过滤器可以完成以下功能:

  • 认证和安全:识别每一个资源的验证要求,并拒绝那些不符的请求

  • 性能监测:在服务边界追踪并统计数据,提供精确的生产视图

  • 动态路由:动态将请求路由到不同后端集群

  • 压力测试:逐渐增加指向集群的流量,以了解性能

  • 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求

  • 静态响应处理:边缘位置进行响应,避免转发到内部集群

  • 多区域弹性:跨域AWS Region进行请求路由,旨在实现ELB(ElasticLoad Balancing)使用多样化

Spring Cloud对Zuul进行了整合和增强。目前,Zuul使用的默认是Apache的HTTP Client,也可以使用Rest Client,可以设置ribbon.restclient.enabled=true.

2.1 高可用

对于网关来说所面对的请求大部分来自于外部(客户端未注册到Eureka Server),要实现网关的高可用可以在在网关前面再架一个前置代理(如Nginx)。如果客户端注册在Eureka Server上那么客户端可以从Eureka Server处获取Zuul网关地址实现客户端负载均衡。

客户端未注册到Eureka Server上(比如手机App端等):
在这里插入图片描述
客户端注册在Eureka Server上(比如:MVC App, SPA 等):
在这里插入图片描述

2.2 Zuul聚合微服务

一个外部请求,可能会通过Zuul查询多个微服务,如果让其一个个请求,就算Zuul转发,网络开销、流量耗费、时长都不是很理想。

我们可以使用Zuul聚合微服务请求,即应用系统只发送一个请求给Zuul,由Zuul请求不同的微服务,并把数据返给应用系统。

三. 示例

3.1 代码地址

eureka注册中心eureka服务端zuul

3.2 pom.xml

<properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值