• SpringCloud微服务项目实战


    前面讲过zuul的网关实现,那为什么今天又要讲Spring Cloud Gateway呢?原因很简单。就是Spring Cloud已经放弃Netflix Zuul了。现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是基于过滤器的,是阻塞IO,不支持长连接。Zuul 2.x版本跟1.x的架构大一样,性能也有所提升。既然Spring Cloud已经不再集成Zuul 2.x了,那么我今天也就再讲解一下Spring Cloud Gateway了。

    1. API网关

    API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。

    网关应当具备以下功能:

    • 性能:API高可用,负载均衡,容错机制。

    • 安全:权限身份认证、脱敏,流量清洗,后端签名(保证全链路可信调用),黑名单(非法调用的限制)。

    • 日志:日志记录(spainid,traceid)一旦涉及分布式,全链路跟踪必不可少。

    • 缓存:数据缓存。

    • 监控:记录请求响应数据,api耗时分析,性能监控。

    • 限流:流量控制,错峰流控,可以定义多种限流规则。

    • 灰度:线上灰度部署,可以减小风险。

    • 路由:动态路由规则。

    2,SpringCloud Gateway 特征

    SpringCloud官方,对SpringCloud Gateway 特征介绍如下:

    (1)基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
    
    (2)集成 Hystrix 断路器
    
    (3)集成 Spring Cloud DiscoveryClient
    
    (4)Predicates 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters
    
    (5)具备一些网关的高级功能:动态路由、限流、路径重写
    

    从以上的特征来说,和Zuul的特征差别不大。SpringCloud Gateway和Zuul主要的区别,还是在底层的通信框架上。

    简单说明一下上文中的三个术语:

    **1)Filter(过滤器)**:
    

    和Zuul的过滤器在概念上类似,可以使用它拦截和修改请求,并且对上游的响应,进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的实例。

    **2)Route(路由)**:
    

    网关配置的基本组成模块,和Zuul的路由配置模块类似。一个Route模块由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问。

    **3)Predicate(断言)**:
    

    这是一个 Java 8 的 Predicate,可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。断言的输入类型是一个 ServerWebExchange。

    3,搭建配置

    首先我们基于之前的演示项目,再创建一个gateway-service模块,添加依赖:

    然后创建启动类:

    配置Gateway路由信息:

    1,通过yml配置实现

    2,通过代码实现,在启动类里创建Route实例的配置类GatewayRoutes

    然后启动服务测试,按顺序启动,依次启动eureka-server、customer-service、order-service、gateway-service。然后登录eureka客户端。

    所有服务正常启动,请求接口测试。

    1,测试customer服务接口

    2,测试order服务接口

    今天由于时间关系,先说到这里,接下来会继续详细讲一些配置,熔断、限流、监控等系列内容。以及redis、MQ等接入应用。

    推荐阅读:

    SpringCloud微服务项目实战 - 网关zuul详解及搭建

    SpringCloud微服务项目实战 - 微服务调用详解(附面试题)

    SpringCloud微服务项目实战,服务注册与发现(附面试题)

    Spring Cloud微服务项目实战--Eureka服务搭建

    扫码关注公众号,发送关键词获取相关资料:

    1. 发“Springboot”领取电商项目实战源码;

    2. 发“SpringCloud”领取学习实战资料;

  • 相关阅读:
    责任
    人生
    有感
    冲突无处不在
    中科院玉泉路攻略——吃篇(校外)
    兄弟
    (18)[转载]:跳台阶问题
    Excel表格加下列选择框
    (转载)(c#)数据结构与算法分析 数组、向量和表
    [转载] 趣味算法:字符串反转的N种方法
  • 原文地址:https://www.cnblogs.com/lyn20141231/p/13570168.html
Copyright © 2020-2023  润新知