Nacos集成SpringCloudGateway使⽤第⼀章:理解解释
本章为⼊门理解
第⼆章上⼿demo:主要是新建⼀个springcloud项⽬集成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 进⾏处理
l的gateway配置
gateway:
routes:
#⾃定义服务id
- id: test
#下⾯验证通过会跳转的地址,如果加上 lb + 服务名 uri以lb://开头(lb代表从注册中⼼获取服务),后⾯接的就是你需要转发到的服务名称
#uri: www.baidu
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 localhost:8080 --cookie "ityouknow=kee.e"
#- Cookie=ityouknow, kee.e
#Header Route Predicate和上⾯那条⼀样,也是可以接收两种⽅式
#使⽤ curl 测试,命令⾏输⼊ curl localhost:8080 -H "X-Request-Id:666666" 如果后⾯不对的话会报错404
#- Header=X-Request-Id, \d+
# 接收⼀组参数,⼀组匹配的域名列表测试:curl localhost:8080 -H "Host: www.ityouknow"springboot原理pdf
#- Host=**.ityouknow
#通过请求⽅式匹配 POST、GET、PUT、DELETE 等不同的请求⽅式来进⾏路由测试:curl localhost:8080
#- Method=GET
#通过请求路径匹配接收⼀个匹配路径的参数来判断是否⾛路由。测试:curl 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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论