美文网首页
SpringCloud-Zuul-01入门介绍

SpringCloud-Zuul-01入门介绍

作者: 小亮__ | 来源:发表于2019-06-22 18:00 被阅读0次

    网关的作用

    微服务一般会有不同的网络地址,而客户端(如手机APP,PC,H5等),可能为了完成一个业务需要调用不同服务的接口。例如电商平台APP,可能需要调用多个微服务接口,才能完成一次下单


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

    • 客户端会多次请求不同的微服务,增加了客户端的复杂性。
    • 存在跨域请求,在一定场景下处理相对复杂。
    • 认证复杂,每个服务都需要独立认证。
    • 难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施。
    • 某些微服务可能使用了防火墙/浏览器不友好的协议,直接访问会有一定的困难。

    以上问题可借助微服务网关解决。微服务网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过微服务网关。使用微服务网关后,架构如下所示。


    Zuul简介

    Zuul 是netflix开源的微服务网关, 本质上是一个web servlet应用。在SpringCloud中,可以与consul,rabbon,Hystrix等组件配合使用,他的核心是一系列的过滤器,通过这些过滤器来完成以下功能

    Zuul有以下功能:

    • 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求;
    • 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而为我们带来精确的生产视图;
    • 动态路由:动态地将请求路由到不同的后端集群;
    • 压力测试:逐渐增加指向集群的流量,以了解性能;
    • 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求;
    • 静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群;

    Demo

    加入依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
    </dependency>
    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
    

    application中增加配置

    server.port=8777
    
    # springcloud-consul配置
    spring.cloud.consul.host=localhost
    spring.cloud.consul.port=8500
    
    # springcloud-gateway 配置
    zuul.routes.fc.path=/server-client1/**
    zuul.routes.fc.serviceId=server-client1
    
    zuul.routes.fc.path=/server-client2/**
    zuul.routes.fc.serviceId=server-client1
    
    

    main函数中增加注解 @EnableZuulProxy

    // 增加cosul的clinet和zuul的配置
    @EnableDiscoveryClient
    @EnableZuulProxy
    public class FcGatewayStart {
        public static void main(String[] args) {
            SpringApplication.run(FcGatewayStart .class, args);
        }
    }
    

    效果
    首先指定服务注册中心的地址为http://localhost:8500/server1/,服务的端口为8777,服务名为service-zuul;以/server-client1/ 开头的请求都转发给server-client1服务;以/server-client2/开头的请求都转发给server-client2服务,达到动态地将请求路由到不同的后端集群的功能

    相关文章

      网友评论

          本文标题:SpringCloud-Zuul-01入门介绍

          本文链接:https://www.haomeiwen.com/subject/lfmkqctx.html