Kmesh 内核级流量治理,服务转发性能提升 50%+
本文分享自华为云社区《DTSE Tech Talk | 第49期:Kmesh内核级流量治理,服务转发性能提升50%+!》,作者:华为云社区精选。
数据面时延开销,无法满足应用 SLA 诉求?内核级流量治理框架 Kmesh 为服务网格带来架构创新与全新体验!在《Kmesh: 架构创新为服务网格带来全新性能体验》主题直播中,华为云云原生 DTSE 技术布道师,华为操作系统高级工程师吴长冶从服务治理演进,服务网格面临的挑战,Kmesh 项目分析及技术能力介绍以及 Demo 演示等多方面解析,Kmesh 通过将 L4、L7 流量治理能力卸载到内核, Kmesh 实现内核级云原生流量治理框架,使得服务转发性能分别提升 50%、60%,底噪开销降低 70%,为用户构建服务网格架构高性能方案!
服务治理逐步从业务中解耦,下沉到基础设施
服务治理的演进历经三代,在第一代的早期形态中, “服务治理能力内嵌在业务代码中”,典型技术有 SOA、ESB,第二代是“服务治理能力抽象到统一 SDK 实现”,典型技术有:Spring Cloud、Dubbo,发展到现在,第三代将服务治理能力归一到服务网格——作为云原生下一代技术,服务网格已成为云上基础设施标配。
服务治理演进
serviceMesh 是处理服务与服务之间通信的基础设施层,弥补了 Kubernetes 在微服务的连接、管理和监控方面的短板,为 Kubernetes 提供更好的应用和服务管理。
服务网格核心理念:
非侵入式 Sidecar 注入技术,将数据面组件注入到应用所在的容器,通过劫持应用流量来进行功能实现,应用无感知。
北向 API 基于 K8s CRD 实现,完全声明式,标准化。
数据面与控制面通过 xDS gRPC 标准化协议通信,支持订阅模式。
服务网格核心特性:
服务 &流量治理:熔断,故障注入,丰富的负载均衡算法,限流,健康检查,灰度发布,蓝绿部署等
流量与访问可视化:提供应用级别的监控,分布式调用链,访问日志等
安全连接:通过 mTLS、认证、鉴权等安全措施帮助企业在零信任的网络中运行应用
当前,以 Istio 为代表的服务网格已逐步流行,但仍面临一定的挑战。以 Istio 为例,在一个有 325 个 cluster 和 175 个 Listener 的服务网格中,一个 Envoy 的实际内存占用量达到了 100M 左右;网格中一共有 466 个实例,则所有 Envoy 占用的内存达到了 466*100M=46.6G,每个 envoy 默认 2 core,共计 466 * 2 core = 932 core。
总结来看,服务治理能力归一到服务网格的第三代服务治理存在的主要问题挑战在于如何优化代理的性能和资源开销。
代理层引入额外时延开销:服务访问单跳增加 2~3ms,无法满足时延敏感应用诉求
资源占用大:代理节点占用额外 CPU/MEM 开销,业务容器部署密度低
业界网格数据面软件百花齐放,多种技术路线并存
业界对现有网格数据面时延底噪的问题已有共识,为解决该问题,发展出了多种技术路线,包括 cilium mesh、linker2-proxy、gRPC Proxyless service Mesh,istio 新模式 ambient mesh,但实际评估与测评中仍然无法很好解决上述问题。回归云原生需求本源,如何实现应用透明、高效、低底噪的服务网格基础设施,提供业界性能最优网格数据面?
通过对 sidecar 网格耗时分布可以看出:sidecar 架构引入大量时延开销,流量编排只占网格开销的 10%,大部分开销在数据拷贝、多出两次的建链通信、上下文切换调度等。那么,能否实现 sidecarless 的服务网格,网格底噪零开销?
Kmesh:流量治理下沉 OS,构建 sidecarless 服务网格
从上文的分析中,我们可以看到,网格引入的额外开销中,真正完成流量治理工作的开销占比并不高,大部分耗时都浪费在了把流量引到代理组件上;那么,流量治理能不能不要经过这个代理组件,随着流量收发的路径随路完成呢?网络通信天然要经过内核协议栈,如果协议栈具备流量治理的能力呢?
为此,我们设计了 Kmesh 高性能服务治理框架,基于可编程内核,将流量治理下沉到 OS,网格数据面不再经过代理组件,服务互通从 3 跳变成 1 跳,从而实现无上线文切换,无数据拷贝,无代理通信的服务治理效果。流量路径如下所示:
下面我们对 Kmesh 如何实现操作系统视角的服务治理能力进行介绍:
高性能:OS 原生支持 L4~L7 的流量编排
Kmesh 在流量编排运行时, 基于伪建链、延迟建链等技术,OS 中实现 L4~L7 的编排底座;基于 ebpf,在内核协议栈中构筑可编程的全栈流量编排运行时。
Kmesh 流量编排运行时
低底噪:Pod 中无需部署代理组件,网格数据面资源开销降低 70%
由于 Kmesh 是随着流量路径完成治理功能,在这种形态下,APP 内并不需要部署 sidecar 软件,只需要在节点上把 Kmesh 的程序建立起来,相较于传统的 sidecar,这样的操作可以将资源的开销降低 70%左右。
平滑兼容:管控面自动对接,与已有数据面协同治理加速
Kmesh 具有平滑的兼容性,支持对现有服务网格的兼容,自动对接网格控制面(Istiod),同时支持 XDS 流量编排协议。如果用户当前使用的是 sidecar 类型的形态,使用 Kmesh 后,可通过 sockmap 替代 iptables,加速已有网格的转发性能。
全栈可视化:流量治理全栈可视化
Kmesh 也为用户提供流量治理全栈可视化的功能。我们知道,sidecar 网格在流量观测时,主要是在 sidecar 流量部件中完成,而在使用 Kmesh 实现这一功能时,我们通过操作系统的视角,实现从 app 到 app 的全栈式端到端指标的采集,同时基于 ebpf 实现低负载观测探针,降低观测对系统底噪的影响,而 OS 视角让观测实了现 low-level 的细粒度。Kmesh 也可以对接主流的观测平台实现更完备观测效果。
HTTP 转发性能相比业界方案 5 倍提升
Kmesh 通过延迟建链与应用协议感知,实现内核级流量编排运行时,同时通过 ebpf 来完成流量编排与观测探针。通过 kmesh-controller 程序的编排,Kmesh 一方面可对接外部 Istiod 等网格控制面,另一方面将观测数据对接到服务网格观测平台,对操作系统内部进行 ebpf 程序管理,从而具备平滑兼容,高性能,低开销,安全隔离,全栈可视化与开放生态能功能,使得服务转发性能分别提升 50%、60%,服务启动性能提升 40%,底噪开销降低 70%。
Kmesh 流量治理效果实测
Kmesh 流量治理性能实测
从技术效果上看,Kmesh 对比现有业界 Sidecar 类型网格,HTTP 转发性能相比业界方案 5 倍提升,为用户构建服务网格架构高性能方案!欢迎访问 Kmesh 开源项目https://github.com/kmesh-net/kmesh进行体验!
更多直播精彩内容及 Demo 演示实测,访问云社区官网:https://bbs.huaweicloud.com/live/DTT_live/202311221700.html
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/fd4dbf87696421a23432dfa3c】。文章转载请联系作者。
评论