zoukankan      html  css  js  c++  java
  • Nacos集成Spring Cloud Gateway使用第一章:理解解释

    本章为入门理解

    第二章上手demo:Nacos集成Spring Cloud Gateway使用第二章,上手demo 主要是新建一个springcloud项目 集成nacos为注册中心,并且实现服务间的相互调用

    第三章:Nacos集成Spring Cloud Gateway使用第三章:nacos配置中心 再第二章的基础上 稍作改动 引用了nacos作为配置中心

    1.什么是nacos

      Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。

       1.1Nacos原理

      Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑

      1.2注册中心原理:

      服务注册方法:以Java nacos client v1.0.1 为例子,服务注册的策略的是每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例

      1.3配置中心原理

     

     2.什么是springcloud gateway

      2.1解释 前提

      Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代ZUUL。

      Spring Cloud Gateway 是 Spring Cloud 新推出的网关框架,之前是 Netflix Zuul。网关通常在项目中为了简化 前端的调用逻辑,同时也简化内部服务之间互相调用的复杂度;具体作用就是转发服务,接收并转发所有内外部的客户端调用;其他常见的功能还有权限认证,限流控制等等。

      2.2理解

    • Route: 【路由】 这个是网关的基本构成,由id,目标uri,一组断言,和一组和过滤器的定义,如果断言为真,则路由匹配
    • Predicate: 【断言】 输入类型是一个serverWebExchange ,我们可以使用它来自http请求的任何内容,比如headers等一些参数
    • Filter: 【过滤器】 gateway 中的fliter 分为两种类型的filter,分别是agteway filter和global filter 过滤器的filter将会对请求和相应进行修改处理

      过程:客户端向Spring Cloud Gateway发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序。该处理程序通过特定于请求的过滤器链运行请求。

    筛选器由虚线分隔的原因是,筛选器可以在发送代理请求之前和之后运行逻辑。所有“前置”过滤器逻辑均被执行。然后发出代理请求。发出代理请求后,将运行“后”过滤器逻辑。

      说白了 Predicate 就是为了实现一组匹配规则,方便让请求过来找到对应的 Route 进行处理

     springboot.application.yml的gateway配置
    gateway:
      routes:
      #自定义服务id
        - id: test
       #下面验证通过会跳转的地址,如果加上 lb + 服务名 uri以lb://开头(lb代表从注册中心获取服务),后面接的就是你需要转发到的服务名称
          #uri: http://www.baidu.com
        uri: lb://serverone
          predicates:
            # 通过请求 ip 地址进行匹配  设置某个 ip 区间号段的请求才会路由
            #- RemoteAddr=192.168.1.1/24
            # Predicate 支持设置一个时间,在请求进行转发的时候,可以通过判断在这个时间之前或者之后进行转发
            #- After=2018-01-20T06:06:06+08:00[Asia/Shanghai]
            # 这个和上面那个刚好相反
            #- Before=2018-01-20T06:06:06+08:00[Asia/Shanghai]
            #时间段
            #- Between=2018-01-20T06:06:06+08:00[Asia/Shanghai], 2019-01-20T06:06:06+08:00[Asia/Shanghai]
            #通过cookie进行匹配,Cookie Route Predicate 可以接收两个参数,一个是 Cookie name , 一个是正则表达式,如果匹配上就会执行路由,如果没有匹配上则不执行。
              #使用 curl 测试,命令行输入: curl http://localhost:8080 --cookie "ityouknow=kee.e"
            #- Cookie=ityouknow, kee.e
            #Header Route Predicate和上面那条一样,也是可以接收两种方式
              #使用 curl 测试,命令行输入 curl http://localhost:8080  -H "X-Request-Id:666666" 如果后面不对的话会报错404
            #- Header=X-Request-Id, d+
            # 接收一组参数,一组匹配的域名列表 测试:curl http://localhost:8080  -H "Host: www.ityouknow.com"
            #- Host=**.ityouknow.com
            #通过请求方式匹配  POST、GET、PUT、DELETE 等不同的请求方式来进行路由  测试:curl http://localhost:8080
            #- Method=GET
            #通过请求路径匹配 接收一个匹配路径的参数来判断是否走路由。  测试:curl http://localhost:8080/foo/1
            #- Path=/foo/{segment}
            #通过请求参数匹配 {一个属性名 一个属性值} 属性值可以为正则表达式,如下面这个,只要请求汇总带有 smile 参数即会匹配路由,不带 smile 参数则不会匹配。
            #- Query=smile
              #Query 的值以键值对的方式进行配置,这样在请求过来时会对属性值和正则进行匹配,匹配上才会走路由。curl localhost:8080?keep=pub
            #- Query=keep, pu.
            #通过请求 ip 地址进行匹配,支持通过设置某个 ip 区间号段的请求才会路由 例如 192.168.0.1/16 (其中 192.168.0.1 是 IP 地址,16 是子网掩码)。
            #- RemoteAddr=192.168.1.1/24
    

      

  • 相关阅读:
    简明Python3教程 12.问题解决
    简明Python3教程 11.数据结构
    【SPOJ 694】Distinct Substrings
    【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
    【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
    【CF Manthan, Codefest 17 A】Tom Riddle's Diary
    【SPOJ 220】 PHRASES
    【POJ 3261】Milk Patterns
    【POJ 3294】Life Forms
    【POJ 1226】Substrings
  • 原文地址:https://www.cnblogs.com/nuti/p/14081162.html
Copyright © 2011-2022 走看看