本文分享自华为云社区《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. 11. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 实现健康检查

    11. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 实现健康检查 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy gith ...

  2. CF223B Two Strings 题解

    题目链接 题目分析 题目很短,只有两句话,可分析的不多,似乎难以入手,我们不妨换一个思路转化一下题意,改为:是否对于 \(s\) 中的每一个字符,总有一个等于 \(t\) 的 \(s\) 的子序列覆盖 ...

  3. Html文本学习内容-2

    (一)文本 1.大小写转换 text-transform属于处理文本的大小写,有4个值: none(默认值) uppercase(全部大写) lowercase(全部小写) capitalize(首字 ...

  4. 不可复制的PDF转成双层可复制PDF

    有些PDF是通过扫描或者虚拟打印机生成的,这些PDF不可复制里边的内容 市面上的工具一般都是收费或者有水印,所以就萌生了自己搞一个的想法: 使用了以下三个开源库 PdfiumViewer PDF预览及 ...

  5. 如何赋予 GPT/LLM 自我意识1

    引子 这个周末OpenAI搞了一个大新闻,围绕 Sam Altman 和 Ilya Sutskever 的各种讨论遍地开花,而其中一个关注点就是他们对于 AGI 降临态度上的偏差.本文不打算讨论公司治 ...

  6. 【主流技术】详解 Spring Boot 2.7.x 集成 ElasticSearch7.x 全过程(二)

    目录 前言 一.添加依赖 二. yml 配置 三.注入依赖 四.CRUD 常用 API ES 实体类 documents 操作 常见条件查询(重点) 分页查询 排序 构造查询 测试调用 五.文章小结 ...

  7. 通过计算巢轻松部署Salt服务

    SaltStack服务实例部署 概述 Salt基于Python构建,是一个事件驱动的自动化工具和框架,用于部署.配置和管理复杂的IT系统.使用Salt来自动化公共基础设施管理任务,并确保基础设施的所有 ...

  8. CF1881C Perfect Square 题解

    思路 简单滴很,对于每一组 \((i,j)\) 找出其对应的三个点,减一减就完了. 对应的点是哪三个呢?显然是 \((n-i+1,n-j+1)\),\((j,n-i+1)\) 以及 \((i,n-j+ ...

  9. 【Android】实现连接SQLite并尝试进行增删改查

  10. 洛谷4055 [JSOI2009]游戏(二分图博弈)

    例题:在N×M的迷宫中有一个棋子,小 AA 首先任意选择棋子放置的位置.然后,小 YY 和小 AA 轮流将棋子移动到相邻的格子里.游戏的规则规定,在一次游戏中,同一个格子不能进入两次,且不能将棋子移动 ...