本文分享自华为云社区《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. 分布式应用开发的核心技术系列之——基于TCP/IP的原始消息设计

    本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 本文的内容主要围绕以下几个部分: TCP/IP的简单介绍. 消息的介绍 ...

  2. Util应用框架Web Api开发快速入门

    本文是使用Util应用框架开发 Web Api 项目快速入门教程. 前面已经详细介绍了环境搭建,如果你还未准备好,请参考前文. 开发流程概述 创建代码生成专用数据库. Util应用框架需要专门用来生成 ...

  3. CSP-2023 复赛游记

    10.15 决定以后每天晚上都来. 洛天依也是. 10.16 想住 首旅京伦. 大巴车要求车况良好,保险齐全,进校后限速 20 km是什么鬼啊,新型速度单位. 距离最远的考区相距4公里 懂了,大巴车开 ...

  4. 线性dp数字三角形

    数字三角形是最裸的题目,没有加入任何的背景,这里就不写了. 下面这道摘花生的题目就是数字三角形的应用 Hello Kitty想摘点花生送给她喜欢的米老鼠. 她来到一片有网格状道路的矩形花生地(如下图) ...

  5. 文心一言 VS 讯飞星火 VS chatgpt (130)-- 算法导论11.2 2题

    二.用go语言,对于一个用链接法解决冲突的散列表,说明将关键字 5,28,19,15,20,33,12,17,10 插入到该表中的过程.设该表中有 9 个槽位,并设其散列函数为 h(k)=k mod ...

  6. gitlab : You won`t be able to pull or push project code via SSH until you add an SSH key to your profile(导致的问题:合并不了代码)

    gitlab : You won`t be able to pull or push project code via SSH until you add an SSH key to your pro ...

  7. 题解 SP15454

    前言 数学符号约定 \(\operatorname{lowbit}(x)\):表示 \(x\) 的二进制最低位. \([a,b]\):表示区间 \(a\sim b\),其中包含 \(a,\,b\) 端 ...

  8. Unity学习笔记--数据持久化之PlayerPrefs的使用

    数据持久化 PlayerPrefs相关 PlayerPrefs是Unity游戏引擎中的一个类,用于在游戏中存储和访问玩家的偏好设置和数据.它可以用来保存玩家的游戏进度.设置选项.最高分数等信息.Pla ...

  9. 在Vue3中使用Element-Plus分页(Pagination )组件

    在Vue3中使用Element-Plus分页(Pagination )组件 开发过程中数据展示会经常使用到,同时分页功能也会添加到页面中. 记:在Vue3中使用Element-Plus分页组件与表格数 ...

  10. 基于资源编排服务(ROS)实现存量资源的IaC化

    背景 如今,基础设施即代码(Infrastructure as code,IaC)是云资源管理和编排的趋势,基于 IaC 的管理模式,在提升云资源自动化管理能力,降低管理成本的同时,可以大大降低云资源 ...