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,发展到现在,第三代将服务治理能力归一到服务网格——作为云原生下一代技术,服务网格已成为云上基础设施标配。

cke_138.png

服务治理演进

serviceMesh是处理服务与服务之间通信的基础设施层,弥补了Kubernetes在微服务的连接、管理和监控方面的短板,为Kubernetes提供更好的应用和服务管理。

cke_139.png

服务网格核心理念:

  1. 非侵入式Sidecar注入技术,将数据面组件注入到应用所在的容器,通过劫持应用流量来进行功能实现,应用无感知。
  2. 北向API基于K8s CRD实现,完全声明式,标准化。
  3. 数据面与控制面通过xDS gRPC标准化协议通信,支持订阅模式。

服务网格核心特性:

  1. 服务&流量治理:熔断,故障注入,丰富的负载均衡算法,限流,健康检查,灰度发布,蓝绿部署等
  2. 流量与访问可视化:提供应用级别的监控,分布式调用链,访问日志等
  3. 安全连接:通过mTLS、认证、鉴权等安全措施帮助企业在零信任的网络中运行应用

当前,以Istio为代表的服务网格已逐步流行,但仍面临一定的挑战。以Istio为例,在一个有325个cluster和175个Listener的服务网格中,一个Envoy的实际内存占用量达到了100M左右;网格中一共有466个实例,则所有Envoy占用的内存达到了466*100M=46.6G,每个envoy默认2 core,共计 466 * 2 core = 932 core。

cke_140.png

总结来看,服务治理能力归一到服务网格的第三代服务治理存在的主要问题挑战在于如何优化代理的性能和资源开销。

  • 代理层引入额外时延开销:服务访问单跳增加2~3ms,无法满足时延敏感应用诉求
  • 资源占用大:代理节点占用额外CPU/MEM开销,业务容器部署密度低

业界网格数据面软件百花齐放,多种技术路线并存

业界对现有网格数据面时延底噪的问题已有共识,为解决该问题,发展出了多种技术路线,包括cilium mesh、linker2-proxy、gRPC Proxyless service Mesh,istio新模式ambient mesh,但实际评估与测评中仍然无法很好解决上述问题。回归云原生需求本源,如何实现应用透明、高效、低底噪的服务网格基础设施,提供业界性能最优网格数据面?

cke_141.png

通过对sidecar网格耗时分布可以看出:sidecar架构引入大量时延开销,流量编排只占网格开销的10%,大部分开销在数据拷贝、多出两次的建链通信、上下文切换调度等。那么,能否实现sidecarless的服务网格,网格底噪零开销?

Kmesh:流量治理下沉OS,构建sidecarless服务网格

从上文的分析中,我们可以看到,网格引入的额外开销中,真正完成流量治理工作的开销占比并不高,大部分耗时都浪费在了把流量引到代理组件上;那么,流量治理能不能不要经过这个代理组件,随着流量收发的路径随路完成呢?网络通信天然要经过内核协议栈,如果协议栈具备流量治理的能力呢?

为此,我们设计了Kmesh高性能服务治理框架,基于可编程内核,将流量治理下沉到 OS,网格数据面不再经过代理组件,服务互通从3跳变成1跳,从而实现无上线文切换,无数据拷贝,无代理通信的服务治理效果。流量路径如下所示:

cke_142.png

下面我们对Kmesh如何实现操作系统视角的服务治理能力进行介绍:

高性能:OS原生支持L4~L7的流量编排

Kmesh在流量编排运行时, 基于伪建链、延迟建链等技术,OS中实现L4~L7的编排底座;基于ebpf,在内核协议栈中构筑可编程的全栈流量编排运行时。

cke_143.png

Kmesh流量编排运行时

低底噪:Pod中无需部署代理组件,网格数据面资源开销降低70%

由于Kmesh是随着流量路径完成治理功能,在这种形态下,APP内并不需要部署sidecar软件,只需要在节点上把Kmesh的程序建立起来,相较于传统的sidecar,这样的操作可以将资源的开销降低70%左右。

cke_144.png

平滑兼容:管控面自动对接,与已有数据面协同治理加速

Kmesh具有平滑的兼容性,支持对现有服务网格的兼容,自动对接网格控制面(Istiod),同时支持XDS流量编排协议。如果用户当前使用的是sidecar类型的形态,使用Kmesh后,可通过sockmap替代iptables,加速已有网格的转发性能。

全栈可视化:流量治理全栈可视化

Kmesh也为用户提供流量治理全栈可视化的功能。我们知道,sidecar网格在流量观测时,主要是在sidecar流量部件中完成,而在使用Kmesh实现这一功能时,我们通过操作系统的视角,实现从app到app的全栈式端到端指标的采集,同时基于ebpf实现低负载观测探针,降低观测对系统底噪的影响,而OS视角让观测实了现low-level的细粒度。Kmesh也可以对接主流的观测平台实现更完备观测效果。

cke_145.png

HTTP转发性能相比业界方案5倍提升

Kmesh通过延迟建链与应用协议感知,实现内核级流量编排运行时,同时通过ebpf来完成流量编排与观测探针。通过kmesh-controller程序的编排,Kmesh一方面可对接外部Istiod等网格控制面,另一方面将观测数据对接到服务网格观测平台,对操作系统内部进行ebpf程序管理,从而具备平滑兼容,高性能,低开销,安全隔离,全栈可视化与开放生态能功能,使得服务转发性能分别提升 50%、60%,服务启动性能提升40%,底噪开销降低 70%。

Kmesh流量治理效果实测

cke_146.png

Kmesh流量治理性能实测

从技术效果上看,Kmesh对比现有业界Sidecar类型网格,HTTP转发性能相比业界方案5倍提升,为用户构建服务网格架构高性能方案!欢迎访问Kmesh开源项目https://github.com/kmesh-net/kmesh进行体验!

更多直播精彩内容及Demo演示实测,访问云社区官网:https://bbs.huaweicloud.com/live/DTT_live/202311221700.html

 

点击关注,第一时间了解华为云新鲜技术~

 

posted @ 2023-11-29 11:03  华为云开发者联盟  阅读(41)  评论(0编辑  收藏  举报