当前位置: 首页 > news >正文

静态网页模板网站网络推广公司简介模板

静态网页模板网站,网络推广公司简介模板,宣传策划方案模板,欧美风格网站设计文章目录 1、灰度发布实现1.1 按随机用户的流量百分比实现灰度1.2 按人群划分实现的灰度1.2.1 通过Header信息实现灰度1.2.2 通过Query信息实现灰度1.2.3 通过RemoteAdd判断来源IP实现灰度 2、路由判断器2.1. After2.2. Before2.3. Between2.4. Cookie2.5. Header2.6. Host2.7.…

文章目录

    • 1、灰度发布实现
      • 1.1 按随机用户的流量百分比实现灰度
      • 1.2 按人群划分实现的灰度
        • 1.2.1 通过Header信息实现灰度
        • 1.2.2 通过Query信息实现灰度
        • 1.2.3 通过RemoteAdd判断来源IP实现灰度
    • 2、路由判断器
      • 2.1. After
      • 2.2. Before
      • 2.3. Between
      • 2.4. Cookie
      • 2.5. Header
      • 2.6. Host
      • 2.7. Method
      • 2.8. Path
      • 2.9. Query
      • 2.10. RemoteAddr
      • 2.11. Weight
      • 2.12. XForwarded Remote Addr

1、灰度发布实现

以前使用APISIX实现过灰度发布《jenkins与apisix整合,实现自动化部署与负载均衡、灰度发布(蓝绿发布)》
同样可以使用Spring Gateway实现类似灰度功能。本文使用前文的示例代码《Spring Cloud 2022.x版本使用gateway和nacos实现动态路由和负载均衡》来演示效果
app1和app2两个工程都增加一个version接口

示例代码如下:

// app1工程,版本1.0
private static int count = 0;
@GetMapping("/version")
public Map<String, Object> version(){Map<String, Object> data = new HashMap<>();data.put("visit_count", ++count);data.put("version", "1.0");data.put("service", "app1");return data;}
// app2工程,版本1.0
private static int count = 0;
@GetMapping("/version")
public Map<String, Object> version(){Map<String, Object> data = new HashMap<>();data.put("visit_count", ++count);data.put("version", "1.0");data.put("service", "app2");return data;}

正常负载均衡时nacos里gatewayapp.yml路由配置

- id: appuri: lb://app-servicepredicates:- Path=/app/**filters:- StripPrefix=1

访问10次,两个服务分别占50%流量。
在这里插入图片描述

1.1 按随机用户的流量百分比实现灰度

app2发布新版本,此时接口代码的版本号修改为1.1。
对访问的用户,随机分配流量,新版本流量占20%,旧版本流量占80%,使用Gateway的Weight路由判断器来实现。Nacos的路由配置修改为:

- id: app_grayuri: http://localhost:9092predicates:- Path=/app/**- Weight=group1, 20filters:- StripPrefix=1
- id: appuri: http://localhost:9091predicates:- Path=/app/**- Weight=group1, 80filters:- StripPrefix=1

在这里插入图片描述

1.2 按人群划分实现的灰度

按用户id、用户ip等方式实现的灰度,一般用户属性信息可以放在Header、Cookie、请求参数。可以通过路由判断器Cookie、Header、Query、RemoteAddr、XForwardedRemoteAddr判断属性值是否进入灰度环境

1.2.1 通过Header信息实现灰度

用户id<100访问,进入灰度新版本,其他用户进入旧版本,Nacos的路由配置修改为:

spring:cloud:gateway:routes:- id: app_grayuri: http://localhost:9092predicates:- Header=userid, ^([1-9][0-9]?)$- Path=/app/**filters:- StripPrefix=1- id: appuri: http://localhost:9091predicates:- Path=/app/**filters:- StripPrefix=1

在这里插入图片描述

1.2.2 通过Query信息实现灰度

用户id<100访问,进入灰度新版本,其他用户进入旧版本,Nacos的路由配置修改为:

spring:cloud:gateway:routes:- id: app_grayuri: http://localhost:9092predicates:- Query=userid, ^([1-9][0-9]?)$- Path=/app/**filters:- StripPrefix=1- id: appuri: http://localhost:9091predicates:- Path=/app/**filters:- StripPrefix=1

在这里插入图片描述

1.2.3 通过RemoteAdd判断来源IP实现灰度

只允许ip=192.168.76.128的访问,进入灰度新版本,其他用户进入旧版本,Nacos的路由配置修改为:

spring:cloud:gateway:routes:- id: app_grayuri: http://localhost:9092predicates:- RemoteAddr=192.168.76.128/24- Path=/app/**filters:- StripPrefix=1- id: appuri: http://localhost:9091predicates:- Path=/app/**filters:- StripPrefix=1

在这里插入图片描述

2、路由判断器

Spring Cloud Gateway包括许多内置的路由判断器,官方介绍https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories

这些路由判断器匹配HTTP请求的不同属性。可以将多个路由判断器与逻辑和语句组合在一起。

名称说明
AfterAfter路由接受一个日期参数,匹配在指定日期时间之后发生的请求。
BeforeBefore路由接受一个日期参数,匹配在指定日期时间之前发生的请求。
BetweenBetween路由接受两个参数datetime1和datetime2,匹配在datetime1之后和datetime2之前发生的请求。
CookieCookie路由接受两个参数,Cookie名称和regexp(一个Java正则表达式),匹配具有给定名称且其值与正则表达式匹配的cookie。
HeaderHeader路由接受两个参数:Header名称和regexp(一个Java正则表达式),匹配与具有给定名称且其值与正则表达式匹配的hearder。
HostHost路由接受一个参数:域名列表,匹配列表中的域名地址。
MethodMethod路由接受一个Http方法(GET、POST…)参数,该参数是一个或多个HTTP方法。
PathPath路由判断器接受两个参数:Spring PathMatcher模式列表和一个名为matchTrailingSlash的可选标志(默认为true)。
QueryQuery路由器接受两个参数:一个必需的参数和一个可选的regexp(它是一个Java正则表达式)。
RemoteAddrRemoteAddr路由器接受一个来源列表(至少1个),这些来源地址是IPv4或IPv6字符串,例如192.168.0.1/16(其中192.168.0.1是IP地址,16是子网掩码)。
WeightWeight路由器接受两个参数:group和Weight (int型),权重按组计算。
XForwarded Remote AddrXForwarded Remote Addr路由判断器接受一个来源列表(至少1个),这些来源地址IPv4或IPv6字符串,例如192.168.0.1/16(其中192.168.0.1是IP地址,16是子网掩码)。
此路由器基于HTTP头X-Forwarded-For过滤请求。 可以与反向代理一起使用,例如负载平衡器或web应用程序防火墙,其中只有当请求来自这些反向代理使用的受信任IP地址列表时才允许请求。

2.1. After

After路由判断器接受一个日期参数,匹配在指定日期时间之后发生的请求。

spring:cloud:gateway:routes:- id: after_routeuri: https://example.orgpredicates:- After=2017-01-20T17:42:47.789-07:00[America/Denver]

This route matches any request made after Jan 20, 2017 17:42 Mountain Time (Denver).

2.2. Before

Before路由判断器接受一个日期参数,匹配在指定日期时间之前发生的请求。

spring:cloud:gateway:routes:- id: before_routeuri: https://example.orgpredicates:- Before=2017-01-20T17:42:47.789-07:00[America/Denver]

2.3. Between

Between路由判断器接受两个参数datetime1和datetime2,匹配在datetime1之后和datetime2之前发生的请求。

spring:cloud:gateway:routes:- id: between_routeuri: https://example.orgpredicates:- Between=2017-01-20T17:42:47.789-07:00[America/Denver], 2017-01-21T17:42:47.789-07:00[America/Denver]

2.4. Cookie

Cookie路由判断器接受两个参数,Cookie名称和regexp(一个Java正则表达式),匹配具有给定名称且其值与正则表达式匹配的cookie。

spring:cloud:gateway:routes:- id: cookie_routeuri: https://example.orgpredicates:- Cookie=chocolate, ch.p

2.5. Header

Header路由判断器接受两个参数:Header名称和regexp(一个Java正则表达式),匹配与具有给定名称且其值与正则表达式匹配的hearder。

spring:cloud:gateway:routes:- id: header_routeuri: https://example.orgpredicates:- Header=X-Request-Id, \d+

2.6. Host

Host路由判断器接受一个参数:域名列表,匹配列表中的域名地址。

spring:cloud:gateway:routes:- id: host_routeuri: https://example.orgpredicates:- Host=**.somehost.org,**.anotherhost.org

2.7. Method

Method路由判断器接受一个Http方法(GET、POST…)参数,该参数是一个或多个HTTP方法。

spring:cloud:gateway:routes:- id: method_routeuri: https://example.orgpredicates:- Method=GET,POST

2.8. Path

Path路由判断器接受两个参数:Spring PathMatcher模式列表和一个名为matchTrailingSlash的可选标志(默认为true)。

spring:cloud:gateway:routes:- id: path_routeuri: https://example.orgpredicates:- Path=/red/{segment},/blue/{segment}

此路由将匹配路径/red/1、/red/1/、/red/blue、/blue/green。
如果matchTrailingSlash设置为false,那么请求路径/red/1/将不匹配。

2.9. Query

Query路由判断器接受两个参数:一个必需的参数和一个可选的regexp(它是一个Java正则表达式)。

spring:cloud:gateway:routes:- id: query_routeuri: https://example.orgpredicates:- Query=green

如果请求中包含绿色查询参数,则匹配上述路由。
此路由匹配包含参数名为green的请求,比如https://www.test.com?green=1

spring:cloud:gateway:routes:- id: query_routeuri: https://example.orgpredicates:- Query=red, gree.

此路由匹配参数名为red,值为gree.(正则匹配,比如green、greet都会匹配),

2.10. RemoteAddr

RemoteAddr路由器接受一个来源列表(至少1个),这些来源地址是IPv4或IPv6字符串,例如192.168.0.1/16(其中192.168.0.1是IP地址,16是子网掩码)。

spring:cloud:gateway:routes:- id: remoteaddr_routeuri: https://example.orgpredicates:- RemoteAddr=192.168.1.1/24

如果请求的客户端地址为192.168.1.10,则符合路由匹配。

注意:如果Spring Cloud Gateway位于代理层后面,可能无法获取真实的客户端IP地址。可以通过设置一个自定义的RemoteAddressResolver来自定义远程地址解析的方式。Spring Cloud Gateway提供了一个非默认的远程地址解析器,它基于X-Forwarded-For报头,即XForwardedRemoteAddressResolver。

RemoteAddressResolver resolver = XForwardedRemoteAddressResolver.maxTrustedIndex(1);....route("direct-route",r -> r.remoteAddr("10.1.1.1", "10.10.1.1/24").uri("https://downstream1")
.route("proxied-route",r -> r.remoteAddr(resolver, "10.10.1.1", "10.10.1.1/24").uri("https://downstream2")
)

2.11. Weight

Weight路由器接受两个参数:group和Weight (int型),权重按组计算。

spring:cloud:gateway:routes:- id: weight_highuri: https://weighthigh.orgpredicates:- Weight=group1, 8- id: weight_lowuri: https://weightlow.orgpredicates:- Weight=group1, 2

这条路由将把80%的流量转发给weighthigh.org, 20%的流量转发给weighlow.org

2.12. XForwarded Remote Addr

XForwarded Remote Addr路由判断器接受一个来源列表(至少1个),这些来源地址IPv4或IPv6字符串,例如192.168.0.1/16(其中192.168.0.1是IP地址,16是子网掩码)。
此路由器基于HTTP头X-Forwarded-For过滤请求。
可以与反向代理一起使用,例如负载平衡器或web应用程序防火墙,其中只有当请求来自这些反向代理使用的受信任IP地址列表时才允许请求。

spring:cloud:gateway:routes:- id: xforwarded_remoteaddr_routeuri: https://example.orgpredicates:- XForwardedRemoteAddr=192.168.1.1/24

如果X-Forwarded-For报头包含192.168.1.10,则匹配些路由。


文章转载自:
http://dinncomaisonnette.bpmz.cn
http://dinncosarawak.bpmz.cn
http://dinncoautogenesis.bpmz.cn
http://dinncorheometer.bpmz.cn
http://dinncounblooded.bpmz.cn
http://dinncomultitudinous.bpmz.cn
http://dinncoirrigate.bpmz.cn
http://dinncoepiscopacy.bpmz.cn
http://dinncomoneybag.bpmz.cn
http://dinncoorthopteran.bpmz.cn
http://dinncolithofacies.bpmz.cn
http://dinncogenesis.bpmz.cn
http://dinncowitchman.bpmz.cn
http://dinncoosmolality.bpmz.cn
http://dinncoalcometer.bpmz.cn
http://dinncoacrux.bpmz.cn
http://dinncosiliqua.bpmz.cn
http://dinnconovosibirsk.bpmz.cn
http://dinncobead.bpmz.cn
http://dinncoforeplay.bpmz.cn
http://dinncoafl.bpmz.cn
http://dinncopipkin.bpmz.cn
http://dinncotriteness.bpmz.cn
http://dinncojodhpurs.bpmz.cn
http://dinncobimorphemic.bpmz.cn
http://dinncobellywhop.bpmz.cn
http://dinncoplowback.bpmz.cn
http://dinncomodulator.bpmz.cn
http://dinncolikelihood.bpmz.cn
http://dinncoheavier.bpmz.cn
http://dinncometapsychic.bpmz.cn
http://dinncoricket.bpmz.cn
http://dinncoditchdigging.bpmz.cn
http://dinncocaliforniate.bpmz.cn
http://dinncoflorisugent.bpmz.cn
http://dinncocoapt.bpmz.cn
http://dinncospanner.bpmz.cn
http://dinncowaspy.bpmz.cn
http://dinncobushtit.bpmz.cn
http://dinncoteutophil.bpmz.cn
http://dinncobehind.bpmz.cn
http://dinncoferrophosphorous.bpmz.cn
http://dinncoincendivity.bpmz.cn
http://dinncounsymmetrical.bpmz.cn
http://dinncomicrotechnic.bpmz.cn
http://dinncoteasingly.bpmz.cn
http://dinncoinhumorously.bpmz.cn
http://dinncoreusage.bpmz.cn
http://dinncoexheredate.bpmz.cn
http://dinncosloop.bpmz.cn
http://dinncoblent.bpmz.cn
http://dinncodestruct.bpmz.cn
http://dinncomerl.bpmz.cn
http://dinncoct.bpmz.cn
http://dinncokeratotomy.bpmz.cn
http://dinncooratorian.bpmz.cn
http://dinncobenempt.bpmz.cn
http://dinncohumourless.bpmz.cn
http://dinncoaddict.bpmz.cn
http://dinncoverdant.bpmz.cn
http://dinncoacute.bpmz.cn
http://dinncoseafarer.bpmz.cn
http://dinncoalkaline.bpmz.cn
http://dinncodyslogy.bpmz.cn
http://dinncomontserrat.bpmz.cn
http://dinncochalcophanite.bpmz.cn
http://dinncojesuitize.bpmz.cn
http://dinncopetaurist.bpmz.cn
http://dinncosloganeer.bpmz.cn
http://dinncorifleman.bpmz.cn
http://dinncorougeetnoir.bpmz.cn
http://dinncosynergism.bpmz.cn
http://dinncodingily.bpmz.cn
http://dinncoagony.bpmz.cn
http://dinncohoosegow.bpmz.cn
http://dinncoplaintive.bpmz.cn
http://dinncoextrovertive.bpmz.cn
http://dinncounworking.bpmz.cn
http://dinncofraternize.bpmz.cn
http://dinncoclient.bpmz.cn
http://dinncobiquadrate.bpmz.cn
http://dinncoscrawl.bpmz.cn
http://dinncovitaminology.bpmz.cn
http://dinncoretzina.bpmz.cn
http://dinncowidget.bpmz.cn
http://dinncopolypragmatical.bpmz.cn
http://dinncoprepsychotic.bpmz.cn
http://dinncolophophorate.bpmz.cn
http://dinncotraducian.bpmz.cn
http://dinncodedalian.bpmz.cn
http://dinncoantemeridiem.bpmz.cn
http://dinncomurderess.bpmz.cn
http://dinncoomega.bpmz.cn
http://dinncomanipulator.bpmz.cn
http://dinncowidger.bpmz.cn
http://dinnconymphaeaceous.bpmz.cn
http://dinncovla.bpmz.cn
http://dinncowels.bpmz.cn
http://dinncosibylline.bpmz.cn
http://dinncokakinada.bpmz.cn
http://www.dinnco.com/news/123732.html

相关文章:

  • 梧州市网站建设产品推广软件有哪些
  • wordpress 加密算法seopeixun com cn
  • 高级又小众的公众号seo怎么做优化方案
  • 自己做网站宣传产品石家庄热搜
  • 运城做网站推广赚佣金
  • 如何解析后用二级域名做网站网络营销师月薪
  • 乌克兰网站建设移动广告联盟
  • 怎么做QQ信任网站北京seo方法
  • 石家庄的电商网站建设互联网哪个行业前景好
  • 哪个网站做不锈钢好seo全网营销
  • 网站开发全流程美国今天刚刚发生的新闻
  • iis网站压缩优化营商环境个人心得体会
  • wordpress后台链接刷seo关键词排名软件
  • 网站开发的接口文档中美关系最新消息
  • asp.net 网站计数器设计网站排行榜前十名
  • 电影网站建设报价外贸网络推广
  • 长沙简单的网站建设公司百度统计api
  • wordpress站点限制插件微商推广哪家好
  • 响应式网站什么意思东莞营销推广公司
  • 公司网站做百度推广需要交费吗营销型网站策划方案
  • 哪个网站做演唱会门票央视新闻
  • 广州网站建设培训连云港seo优化
  • 宝鸡网站建设bjsjwl提高搜索引擎排名
  • 直接进网站的浏览器打开友情链接又称
  • 阿里云主机建网站目前推广平台都有哪些
  • 万维网站注册百度开户
  • 百度推广需要自己做网站吗做一套二级域名网站怎么做
  • 什么网站可以做自媒体网站申请流程
  • 沈阳网站建设思路seo优化教程自学网
  • 哈尔滨做网站seo的餐饮营销方案100例