在脉冲云开发平台中使用灰度发布如何控制HTTP流量
脉冲云,通过规范软件开发流程以及使用自动化工具辅助,提高开发团队协同力,聚焦业务,以成倍提高开发效率
在应用的灰度发布期间,能够精确控制用户的HTTP流量,实现A/B测试等功能。
HTTP协议
当前,脉冲云只能对HTTP协议的流量进行精确控制,如果是普通TCP流量或者是UDP流量,只能按照新旧版本应用副本数量进行平均的负载均衡。
为了能够让脉冲云正确识别HTTP流量,请在应用的端口设置中,给端口协议选择HTTP。
如果某个应用存在多个端口,并且同时存在HTTP协议和TCP协议,那么HTTP协议的端口可以进行精确流量控制,其TCP端口上的流量仍然按照副本数进行负载均衡。
按百分比控制流量
拖动流量滑块,就可以将指定量的流量导入到新版本上。
流量的百分比和应用副本数的比例相互独立,比如老版本运行了10个应用副本,新版本只运行了一个副本,流量的比例设置为50%,那么新旧版本上的流量比就为 1:1,并非 1:10。您可以根据性能需要,动态控制新版本应用副本数量,以免出现少量的副本却承受大量流量,造成的不稳定。
匹配 HTTP Header
通过指定HTTP请求头的匹配规则,可以精确地将满足指定特征的用户导入到新版本上来。
如果指定了多条匹配规则,多条规则为AND关系,用户必须全部满足,才能匹配上。
匹配规则
精确匹配
请求头内容必须精确等于匹配条件。
包含
请求头内容只需包含匹配条件。
存在
判断指定Header是否存在,不在乎其内容是什么。
正则匹配
请求头内容必须满足于指定的正则表达式。正则匹配是完全匹配,比如Header内容为 123
,请求条件只输入\d
是无法匹配的,必须输入完整的正则,比如\d{3}
或\d+
。因为是完全匹配,所以不需要正则开始符^
和 结束符$
,如果存在这两个符号,反而会匹配失败。
匹配前缀
请求头内容必须以指定的字符串开头。
匹配后缀
请求头内容必须以指定的字符串结尾。
匹配范围
请求头内容必须是数字,并且满足匹配条件给出的 最小值 到 最大值 区间,可以为负数。
反向匹配
如果勾选了反向,则匹配规则条件为否。
匹配 Cookie
其实 Cookie 匹配是 Header 匹配的快捷方式,因为Header的正则匹配必须是完全匹配,而用户的Cookie一般会有多项,如果直接在Header匹配中指定 Cookie 头的匹配规则会很麻烦。
Cookie匹配是常用的方式,其各项匹配规则和普通Header匹配规则基本一致,只是不支持区间匹配。
关于 HTTP2
Header 的匹配条件的名称必须是小写,比如要匹配 User-Agent
请求头,在编写匹配规则时,必须小写格式 user-agent
,原因是,在脉冲云管理的集群内部,各个微服务之间的HTTP流量会被统一视作 HTTP2 流量。
就算两个微服务之间通信采用的是 HTTP/1.1 协议,也会自动将HTTP/1.1 升级为HTTP2,这样就用上了HTTP2协议的长连接、链接复用、Header压缩等功能,大大地提高了性能。
而HTTP2协议的Header字段名,统一是小写格式。
所以,不论用户请求的是HTTP/1.1 协议 还是 HTTP2 协议,不论请求头字段是大写还是小写,在填写流量控制规则时,只需小写即可。
分享转自:脉冲云开发平台