本文分享自华为云社区《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提供更好的应用和服务管理。

服务网格核心理念:

  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。

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

  • 代理层引入额外时延开销:服务访问单跳增加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

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

Kmesh内核级流量治理,服务转发性能提升50%+的更多相关文章

  1. 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

    ☞☞☞ 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的 ☜☜☜ ○○○○○○○○○○○○○○○ 大家好,又见面了~ kafka作为一种高吞吐量的分布式发布订阅消息系统,在业务系统中被广泛 ...

  2. 天天动听MP3解码器性能提升50%

    天天动听今日升级提醒,发现有一句 “使用新的MP3解码器,性能提升50%”,太惊讶了. 之前版本的MP3解码器使用libmpg123,效果已经是MP3解码器中非常不错的了. 50%的提升,应该不仅仅是 ...

  3. Web服务端性能提升实践

    随着互联网的不断发展,日常生活中越来越多的需求通过网络来实现,从衣食住行到金融教育,从口袋到身份,人们无时无刻不依赖着网络,而且越来越多的人通过网络来完成自己的需求. 作为直接面对来自客户请求的Web ...

  4. php 性能优化之opcache - 让你的php性能提升 50%

    性能提升原理:减少文件解析的时间. 我们都知道,程序要运行,得有一个编译或者解析的过程,编译或解析之后的代码才是机器可以运行的. 而 php 是一种解析性语言,在使用php来处理http请求的时候,每 ...

  5. Netty系列之Netty百万级推送服务设计要点

    1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...

  6. Netty_Netty系列之Netty百万级推送服务设计要点

    1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...

  7. 【netty】Netty系列之Netty百万级推送服务设计要点

    1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...

  8. Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)

    补遗 关于网络接收的软中断负载均衡,已经有了成熟的方案,可是该方案并不特别适合数据包转发,它对server的小包处理非常好.这就是RPS.我针对RPS做了一个patch.提升了其转发效率. 下面是我转 ...

  9. Linux转发性能评估与优化(转发瓶颈分析与解决方式)

    线速问题 非常多人对这个线速概念存在误解. 觉得所谓线速能力就是路由器/交换机就像一根网线一样. 而这,是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机,存在一个核心延迟操作,这 ...

  10. Netty系列之Netty百万级推送服务设计要点(转)

    1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...

随机推荐

  1. 前端web页面支持MQTT消息推送

    MQTT服务一般用直接下载mosquitto,安装后启动服务即可.方便可靠. 但是默认情况下只开通了1883的tcp访问,用html的web页面上调用就不行了. 其实mosquitto是支持多端口的, ...

  2. 舞会(lgP1352)

    写了一个多小时,本来觉得 bfs 能过然后码了好久发现不会确定顺序,又重新写了一遍 dfs /kk 好吧其实是因为我记得上次做这题的时候写的是 bfs 设 \(f[i][0]\) 表示以 \(i\) ...

  3. QT(8)-QSpinBox

    QSpinBox 1 介绍 QSpinBox 是 Qt 中的一种数字输入控件,支持整数和浮点数输入.它允许用户通过上下箭头或键盘输入来选择数字.您可以设置最小值.最大值和步长,以限制用户输入的范围.Q ...

  4. [Python急救站]草莓熊的绘制

    草莓熊也是一个热门的图案,今天就用Python绘制一下 import turtle as t # 设置背景颜色,窗口位置以及大小 t.colormode(255) # 颜色模式 t.speed(0) ...

  5. CSS必学:元素之间的空白与行内块的幽灵空白问题

    作者:WangMin 格言:努力做好自己喜欢的每一件事 CSDN原创文章 博客地址 WangMin 我们在开发的过程中,难免会出现一些难以预料的问题.那么其中,CSS空白现象就是非常常见的问题之一.虽 ...

  6. Redis系列之常见数据类型应用场景

    目录 String 简单介绍 常见命令 应用场景 Hash 简单介绍 常见命令 应用场景 List 简单介绍 常见命令 应用场景 Set 简单介绍 常见命令 应用场景 Sorted Set(Zset) ...

  7. 浏览器事件循环Event Loop

    引言: 事件循环不是浏览器独有的,从字面上看,"循环"可以简单地认为就是重复,比如for循环,就是重复地执行for循环体中的语句,所以事件循环,可以理解为重复地处理事件,那么下一个 ...

  8. KMeans算法全面解析与应用案例

    本文深入探讨了KMeans聚类算法的核心原理.实际应用.优缺点以及在文本聚类中的特殊用途,为您在聚类分析和自然语言处理方面提供有价值的见解和指导. 关注TechLead,分享AI全维度知识.作者拥有1 ...

  9. SQLBI_精通DAX课程笔记_02_数据类型

    SQLBI_精通DAX课程笔记_02_数据类型 PowerBi 和 Analysis Services 在数据加载环节,无论数据源是什么类型,都会自动将数据转化为DAX可用的数据类型集. 以下链接为微 ...

  10. 数据分析师如何做好PPT

    作为一名数据分析师,制作出色的PPT是非常重要的技能之一.一个好的PPT可以让你的数据洞察更加生动有趣,并有效传达给观众.以下是一些详细的步骤和技巧,帮助你成为一名擅长制作PPT的数据分析师: 确定目 ...