美文网首页
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