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

成功案例网站建设免费网站代理

成功案例网站建设,免费网站代理,公司注册查重名,建模e-r跟做网站有什么关系作者#xff1a;韦鑫#xff0c;Higress Committer#xff0c;来自南京航空航天大学分布式系统实验室 导读#xff1a;本文将和大家一同回顾 Spring Cloud Gateway 是如何满足 HTTP 请求/响应转换需求场景的#xff0c;并为大家介绍在这种场景下使用 Higress 云原生网关的…作者韦鑫Higress Committer来自南京航空航天大学分布式系统实验室 导读本文将和大家一同回顾 Spring Cloud Gateway 是如何满足 HTTP 请求/响应转换需求场景的并为大家介绍在这种场景下使用 Higress 云原生网关的解决方案同时还对比了两者的性能差异。 SCG 修改请求/响应 在 Spring Cloud Gateway [ 1] (以下简称为 SCG) 中当我们需要对 HTTP 请求或响应进行修改时SCG 提供了许多内置的 GatewayFilter [ 2] 来满足我们对这种应用场景的需求例如 AddRequestHeader,AddRequestParameter, DedupeResponseHeader,MapRequestHeader, ModifyRequestBody 等。 考虑以下简单用例 添加请求头部 X-First值从请求路径中获取例如从 /response-headers?testKeytestValue 中获取 “response-headers” 将请求头部 X-First 的值映射给 X-Second 添加请求查询参数 k1v1 剔除重复的响应头部 X-Dedupe。 在 SCG 中使用 GatewayFilter 我们可以这样配置 # application.yaml:spring:cloud:gateway:routes:- id: test_routeuri: lb://httpbin-svcpredicates:- Path/{api}/**filters:- AddRequestHeaderX-First, {api}- MapRequestHeaderX-First, X-Second- AddRequestParameterk1, v1- DedupeResponseHeaderX-Dedupe, RETAIN_FIRST相信拥有 SCG 使用经验的同学对上述配置一定不陌生那么本文将重点给出另一种能够**满足上述需求并且性能更加优越的解决方案——使用 Higress 云原生网关的 Transformer 插件。 Higress 插件与 SCG 性能比较 我们在同一吞吐量水平QPS上开启/关闭 Higress Transformer 插件 [ 3] 和 SCG 相应 GatewayFilters统计两者在 CPU 和内存资源上的开销。 经过测试 [ 13] 我们得到的结论是 在 Higress 未启用 Transformer 插件SCG 未启用 GatewayFilters 的条件下SCG 的 CPU, 内存资源开销分别约为 Higress的 3.30, 4.88倍在 Higress 启用 Transformer 插件SCG 启用相应 GatewayFilters 的条件下SCG 的 CPU,内存资源开销分别约为 Higress 的 2.98, 3.19倍。 可见 Higress Transformer 相比于 SCG GatewayFilter 有着相当不错的性能表现 接下来我们将进一步为大家介绍 Higress 云原生网关以及上述提到的 Higress Transformer 插件。 Higress 简介 Higress [ 4] 是基于阿里内部的 Envoy Gateway 实践沉淀、以开源 Istio Envoy 为核心构建的下一代云原生网关实现了流量网关微服务网关安全网关三合一的高集成能力深度集成 Dubbo、Nacos、Sentinel 等微服务技术栈能够帮助用户极大地降低网关的部署及运维成本且能力不打折在标准上全面支持 Ingress 与 Gateway API积极拥抱云原生下的标准 API 规范同时Higress Controller 也支持 Nginx Ingress 平滑迁移帮助用户零成本快速迁移到 Higress。 Higress 提供了一套 Wasm (WebAssembly) SDK [ 5] 使得开发者能够轻松使用 CGolangRust 开发 Wasm 插件增强网关能力。下面将为大家介绍 Higress Transformer 插件的基本功能最后简单说明 Transformer 插件的核心代码逻辑。 Transformer 插件介绍 Higress Transformer 插件可以对请求/响应头部、请求查询参数、请求/响应体参数进行转换支持的转换操作类型包括删除remove、重命名rename、更新replace、添加add、追加append、映射map和去重dedupe。 接下来我们复现最开始提到的 SCG GatewayFilter 简单用例来演示如何使用该插件以下使用 Higress 控制台可以很方便地部署插件当然也可以使用 K8s YAML Manifests 的方式 [ 12] 首先根据官方文档 [ 6] 快速安装 Higress结果如下 $ kubectl -n higress-system get deploy NAME READY UP-TO-DATE AVAILABLE AGE higress-console 1/1 1 1 1d higress-console-grafana 1/1 1 1 1d higress-console-prometheus 1/1 1 1 1d higress-controller 1/1 1 1 1d higress-gateway 1/1 1 1 1d通过 Higress 控制台添加域名foo.bar.com、路由配置foo将流量转发至后端的 httpbin [ 7] 服务 为 foo 路由添加 Transformer 插件当前未推送插件至官方镜像仓库可以先使用 docker.io/weixinx/transformer:v0.1.0或到代码仓库自行构建 注为了能够同时完成请求和响应转换的需求我们需要为 foo 路由再添加一个 Transformer 插件命名为 transformer-resp用于处理响应方向。 添加 Transformer 配置并开启该插件 添加请求头部 X-First值从请求路径中获取例如从 /response-headers?testKeytestValue 中获取 “response-headers”将请求头部 X-First 的值映射给 X-Second添加请求查询参数 k1v1剔除重复的响应头部 X-Dedupe。 # transformer: type: request # 指定 Transformer 类型 rules: # 指定转换规则 - operate: add # 指定转换操作类型headers: # 指定头部转换规则- key: X-Firstvalue: $1 # 正则表达式捕获组 $1支持 RE2 语法path_pattern: ^\/(\w)[\?]{0,1}.*$querys: # 指定查询参数转换规则- key: k1value: v1 - operate: mapheaders:- key: X-Firstvalue: X-Second --- # transformer-resp: type: response rules: - operate: dedupeheaders:- key: X-Dedupevalue: RETAIN_FIRST发送请求进行测试 # 验证请求方向转换 $ curl -v -H host: foo.bar.com console.higress.io/get ...HTTP/1.1 200 OK ...{args: {# 添加了查询参数 k1v1k1: v1},headers: {...X-First: get, # 添加了请求头部 X-First值 get 来自请求路径X-Second: get # 映射了请求头部 X-Second},...# 添加了查询参数 k1v1url: http://foo.bar.com/get?k1v1 }# 验证响应方向转换 $ curl -v -H host: foo.bar.com \ console.higress.io/response-headers?X-Dedupe1X-Dedupe2X-Dedupe3 ...HTTP/1.1 200 OKx-dedupe: 1 # 保留了响应头部 X-Dedupe 的第一个值 ...{...# 通过查询参数传给 httpbin 的自定义响应头部X-Dedupe: [1,2,3],... }❗️需要注意的是 与上述例子相同若有同时处理请求和响应转换的需求则需要为相应路由添加两个 Transformer 插件分别处理请求方向和响应方向正在优化请求体支持的 Content-Type 有application/json,application/x-www-form-urlencoded,multipart/form-data而响应体仅支持 application/json更多说明详见插件文档 [ 3] 。 Transformer 逻辑 本节将简单说明 Higress Transformer 插件的核心代码逻辑希望可以为有兴趣优化该插件或进行二次开发的同学提供一些帮助。 首先该插件代码位于Higress 仓库的 plugins/wasm-go/extensions/transformer 目录下使用 Higress 提供的 Wasm SDK [ 5] 进行开发关于如何开发 Wasm 插件详见官方文档 [ 8] 。 插件的配置模型 TransformerConfig # 模型以插件配置的形式暴露给用户 type TransformerConfig struct {typ string # Transformer 类型[request, response]rules []TransformRule # 转换规则trans Transformer # Transformer 实例不对用户暴露配置用于实际的转换操作 }type TransformRule struct {operate string # 转换操作类型headers []Param # header 参数 querys []Param # query 参数body []Param # body 参数 }type Param struct {key string # 表示字段的 keyvalue string # 表示字段的 value 或 key (map) 或 strategy (dedupe)valueType string # 为 application/json body 指定 value 的数据类型hostPattern string # host 正则匹配模式pathPattern string # path 正则匹配模式 }其中 Transformer 作为接口分别有请求和响应两个实现requestTransformer, responseTransformer主要实现了 3 个接口方法 TransformHeaders,TransformerQuerys 和 TransformBody type Transformer interface {TransformHeaders(host, path string, hs map[string][]string) errorTransformQuerys(host, path string, qs map[string][]string) errorTransformBody(host, path string, body interface{}) error... }var _ Transformer (*requestTransformer)(nil) var _ Transformer (*responseTransformer)(nil)由于头部Headers和查询参数Querys都是以 key-value 的形式存在因此通过 kvHandler 对两者采用统一的处理逻辑而 Body 由于请求、响应支持不同的 Content-Type因此分别通过 requestBodyHandler (kvHandler,jsonHandler 组合)和 responseBodyHandler (jsonHandler) 进行处理。综上在修改该插件逻辑时主要对kvHandler 和 jsonHandler 进行修改即可其中 jsonHandler 依赖 GJSON [ 9] 和 SJSON [ 10] 工具库。目前 handler 中的转换顺序是被硬编码的remove - rename - replace - add - append - map - dedupe我们对此有优化的打算也欢迎感兴趣的同学参与进来 ~ 总结 本文带大家了解了 Higress Transformer 插件并与 Spring Cloud Gateway 进行了性能比较在文章的最后还说明了该插件的核心代码逻辑希望能够为大家从 Spring Cloud Gateway 迁移至 Higress 提供帮助 如果您觉得 Higress 对您有帮助欢迎前往 Github: Higress [ 11] 为我们 star⭐️ 一下期待与您在 Higress 社区相遇 ~ 相关链接 [1] Spring Cloud Gateway https://cloud.spring.io/spring-cloud-gateway/reference/html/ [2] SCG GatewayFilter Factories https://cloud.spring.io/spring-cloud-gateway/reference/html/#gatewayfilter-factories [3] Higress Transformer 插件 https://github.com/alibaba/higress/tree/main/plugins/wasm-go/extensions/transformer [4] Higress 官方文档 https://higress.io/zh-cn/ [5] Higress Wasm SDK https://github.com/alibaba/higress/tree/main/plugins [6] Higress 快速开始 https://higress.io/zh-cn/docs/user/quickstart [7] httpbin https://httpbin.org/ [8] 开发 Higress Wasm 插件 https://higress.io/zh-cn/docs/user/wasm-go [9] GJSON https://github.com/tidwall/gjson [10] SJSON https://github.com/tidwall/sjson [11] Higress 代码仓库 https://github.com/alibaba/higress [12] Transformer Demo https://github.com/higress-group/higress-demo/tree/main/wasm-demo/wasm-demo-go/wasm-plugin-transformer [13] 性能对比配置 https://gist.github.com/WeixinX/c24f4ded37832dd7e753b2d27470f0fc
http://wiki.neutronadmin.com/news/242250/

相关文章:

  • 管理网站 开发黔西南做网站的有几家
  • 浙江省建设厅 网站是多少怎么看网站开发的发展
  • 网站备案时间也太慢了百度云搜索引擎入口百度网盘
  • 阿里云有主体新增网站简历网站有哪些
  • 用js做网站登录北京数据优化公司
  • 贵阳网站建设三思网络长春建设网站公司哪家好
  • 学信网 的企业网站给你做认证湘阴网站建设
  • 织梦做有网站有后台 能下载备份所有代码文件么哪个网站企业邮箱最好
  • 做头像的网站空白桂林人才网
  • 如何建视频网站软文代写是什么
  • 行知智网站开发精准广告投放
  • 自己做的微课上传到哪个网站专业的临沂网站优化
  • 企业一站式网站建设做免费网站教程国vs
  • 自己做服务器的网站吗xml网站地图每天更新
  • 做网站怎么字体全部变粗了设计培训班大概多少钱
  • 网站开发如何让图片加载的更快福田做棋牌网站建设找哪家效益快
  • 织梦网站如何做伪静态wordpress增加内存
  • 杭州模板网站wordpress视频大小自由适配屏幕
  • 佛山网站建设公司排行丹东有做公司网站的吗
  • 曹县商城网站建设云主机添加网站
  • 中英文的网站怎么建设中山网站建设 骏域
  • 北京网站排名优化软件wordpress主题 游戏
  • 什么是网页和网站要压实互联网企业的什么责任
  • 如何做网络集资网站wordpress 分类图片尺寸
  • seo网站推广价格模板网站购买
  • 网站使用微信支付做网站用什么语音
  • 建设的网站打开速度很慢十大营销咨询公司
  • 深圳福田网站建设国外 外贸 网站 源码
  • 免费诶网站建设wordpress换空间搬家
  • 南京做网站询南京乐识网站换肤代码