您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[网易]:从Hango看开源云原生网关性能优化之道 - 发现报告
当前位置:首页/其他报告/报告详情/

从Hango看开源云原生网关性能优化之道

2023-03-09网易刘***
从Hango看开源云原生网关性能优化之道

从Hango看开源云原生网关 网易数帆数字化基础软件自主创新分享周 性能优化之道 主讲人:韩佳浩|网易数帆 CONTENT 1 云原生网关设计模式 网易数帆数字化基础软件自主创新分享周 2 实践过程中的性能问题 3 性能优化经验之谈 4 Hango网关展望 数字化基础软件自主创新分享周 1 云原生网关设计模式 数字化基础软件自主创新分享周 NETEASEDIGITALSAIL 网易数帆数字化基础软件自主创新分享周 云原生网关设计模式 网易数帆数字化基础软件自主创新分享周 云原生网关设计模式 网关->API网关 数字化基础软件自主创新分享周 网易数帆数字化基础软件自主创新分享周 云原生网关设计模式 API网关–云原生网关 数字化基础软件自主创新分享周 网易数帆数字化基础软件自主创新分享周 云原生网关设计模式 Hango网关 数字化基础软件自主创新分享周 NETEASEDIGITALSAIL 实践过程中的性能问题 2 实践过程中的性能问题 数字化基础软件自主创新分享周 网易数帆数字化基础软件自主创新分享周 网易数帆数字化基础软件自主创新分享周 实践过程中的性能问题 控制面 数据面 插件扩展 数字化基础软件自主创新分享周 实践过程中的性能问题 控制面 xds推送性能:Istio的计算模型以及全量推送,在规模集群下会存在推送的性能问题 整个discovery默认watch整个集群的变化,集群规模较大,存在大量非网关upstream的watch 网易数帆数字化基础软件自主创新分享周 推送的性能会影响数据面路由及配置生效的时效性,频繁的push会导致自身cpu–memory成为瓶颈 数据面 大规模route下的路由匹配性能问题 filterchain模型下的非必要插件链执行性能损耗 网关场景下的可观测性需求,原生逻辑性能不佳 插件扩展 社区lua代码可扩展性低,可迁移性差,不支持插件配置,插件配置与插件逻辑混同 社区luaCAPI在高性能插件场景下有性能劣势 数字化基础软件自主创新分享周 NETEASEDIGITALSAIL 性能优化经验之谈 3 性能优化经验之谈 数字化基础软件自主创新分享周 网易数帆数字化基础软件自主创新分享周 性能优化经验之谈 Istio推送的性能 1、MCP任意资源变更,导致所有同类型资源的全量推送。 fullpush 2、ServiceEntryStore比较,非必要字段(createtime,mutex)的重复比较,导致推送升级。 网易数帆数字化基础软件自主创新分享周 3、RefreshIndex单个服务变更,更新所有endpointindex,导致写放大。启动过程尤为明显->集群规模较大,导致启动慢,甚至产生雪崩。 减少fullpush 1、mcpserver支持ResourceVersion;mcpclientskipwhenrvnochange。 优化推送,避免升级 2、基于istio.io/rev实现资源隔离。 3、优化ServiceEntryStore比较,避免推送升级。 4、优化推送流程,优化endpointindex更新过程的写放大。 5、discovery黑名单 数字化基础软件自主创新分享周 "dynamic_active_cluster":[ [ "cluster":["@type":"type.googleapis.com/envoy.config.cluster.v3.Cluster",,"name":"svc1-cluster" ] ], [ ”cluster":[ "@type":"type.googleapis.com/envoy.config.cluster.v3.Cluster",,"name":"svc2-cluster" ] ], ] 不同数据面暴露不同服务 Envoyproxycluster配置 What? 1、网关proxycluster过多,很多不使用的cluster。route性能下降 2、整体链路压力变大,包括cluster指标统计,Envoy性能,Istio推送xDS性能 减少非必要cluster下发 性能优化经验之谈 网关cluster过多影响性能 网易数帆数字化基础软件自主创新分享周 数字化基础软件自主创新分享周 性能优化经验之谈 网易数帆数字化基础软件自主创新分享周 网关cluster过多影响性能减少非必要cluster下发 配置隔离 CRDlabel隔离下发 稳定性提高 性能提升 2000SVC集群规模,性能提升15% DR与VSmatch下发 数字化基础软件自主创新分享周 网易数帆数字化基础软件自主创新分享周 性能优化经验之谈 Envoy精确匹配路由性能优化 1、第一层根据VH进行match,第二层顺序匹配O(N)) 2、在某些场景(Dubbo精确匹配场景),存在一个域名下RouteList(1W)1W条route精确匹配下,TPS提升70% 数字化基础软件自主创新分享周 性能优化经验之谈 路由可观测指标性能优化 1、网关对路由可观测的必要性。 2、社区的VirtualCluster可以实现路由可观测,设计上是做路由分组观测(一条 virtualcluster作为一条单独的匹配),不适合做生产级别路由维度指标观测。 配置维度复杂度提升 大规模route下的二次匹配性能开销 网易数帆数字化基础软件自主创新分享周 思路 metadata:filter_metadata: proxy.filters.http.detailed_stats:stats: -route_segment_0 -route_segment_1 L7filter扩展细粒度指标插件: proxy.filters.http.detailed_stats 利用路由/UpstreamHost信息进行指标统计 数字化基础软件自主创新分享周 TPS 网易数帆数字化基础软件自主创新分享周 性能优化经验之谈 路由可观测指标性能优化 hango路由指标性能数据 80000 70000 60000 50000 40000 30000 20000 10000 0 100 200 400 并发数 500 800 proxy_filter_route noplugin 优化结果–测试数据 8C容器网络,5000条httproute,开启proxy_filter_http_detailed_status进行路由指标统计 数字化基础软件自主创新分享周 性能优化经验之谈 自定义插件Rider性能优化 Rider介绍 Rider插件:C++实现的Envoy七层插件,负责初始化和调用Lua代码,并且将Envoy内部的数据和功能通过LuaCAPI或FFI接口的形式提供给LuaSDK调用。 网易数帆数字化基础软件自主创新分享周 LuaSDK:Lua插件代码框架,用户可以通过调用LuaSDK提供的API实现请求处理;LuaSDK提供了获取全局以及路由级插件配置的API。 Rider 支持Lua语言扩展 支持Envoy动态加载、更新、移除Lua插件 支持定义Lua插件配置 支持自定义Lua插件生效范围,网关级/项目级/路由级 性能优于Envoy社区Lua扩展和WASM扩展 数字化基础软件自主创新分享周 性能优化经验之谈 自定义插件Rider性能优化 问题:envoy内部body暴露给luasdk的方式是luaCAPI;调用性能不如luajit提供的FFI调用。 架构优化:Lua插件的执行阶段进一步细分为Header和Body阶段,使得Body相关API的实现能充分利用FFI的性能优势; 问题:luasdk在调用FFI时,传入lightuserdata类型,luajit在编译阶段无法编译为机器码,会退出编译模式,退化为解释模式,性能下降。 FFI:Luasdk将FFI生命的函数的类指针去掉。直接在riderplugin 网易数帆数字化基础软件自主创新分享周 中拿到filter对象,给FFI函数调用。 decodeHeaders on_request get_body … yieldresume decodeData 数字化基础软件自主创新分享周 envoy:4核client:wrk4t32c4线程,32并发 新FFI相比之前性能提升66%,相比CAPI性能提升16% 性能优化经验之谈 性能优化如海绵的水、挤一挤总会有的 日志输出AccessLogJsonProtobufJson序列化 (structtojson性能裂化21%CPU开销) filterchain存在空跑非必要插件链,额外消耗CPU 网易数帆数字化基础软件自主创新分享周 数字化基础软件自主创新分享周 性能优化经验之谈 性能优化如海绵的水 采用普通字符串格式进行AccessLog日志输出 (AccessLog模块CPU消耗下降为1.7%) 通过业务逻辑以及插件开关控制非必要插件的空跑 网易数帆数字化基础软件自主创新分享周 数字化基础软件自主创新分享周 NETEASEDIGITALSAIL Hango网关展望 4 Hango网关展望 数字化基础软件自主创新分享周 网易数帆数字化基础软件自主创新分享周 高可用 Hango网关展望 以多集群能力为出发,提升业务及网关自身高 可用。 丰富场景 网易数帆数字化基础软件自主创新分享周 在通用负载能力以及Dubbo、SOAP等协议维度扩展丰富的7层代理场景。 以云原生网关为出发点,协助业务无损的进行容器化迁移。结合服务网格技术栈,为业务提供一整套无侵入治理解决方案。 业务无损 Hango源码&文档:https://github.com/hango-io/hango-gatewayQQ群:914823850 数字化基础软件自主创新分享周 网易数帆数字化基础软件自主创新分享周 THANKS 感谢观看