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
Kmesh内核级流量治理,服务转发性能提升50%+的更多相关文章
- 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的
☞☞☞ 我是如何将一个老系统的kafka消费者服务的性能提升近百倍的 ☜☜☜ ○○○○○○○○○○○○○○○ 大家好,又见面了~ kafka作为一种高吞吐量的分布式发布订阅消息系统,在业务系统中被广泛 ...
- 天天动听MP3解码器性能提升50%
天天动听今日升级提醒,发现有一句 “使用新的MP3解码器,性能提升50%”,太惊讶了. 之前版本的MP3解码器使用libmpg123,效果已经是MP3解码器中非常不错的了. 50%的提升,应该不仅仅是 ...
- Web服务端性能提升实践
随着互联网的不断发展,日常生活中越来越多的需求通过网络来实现,从衣食住行到金融教育,从口袋到身份,人们无时无刻不依赖着网络,而且越来越多的人通过网络来完成自己的需求. 作为直接面对来自客户请求的Web ...
- php 性能优化之opcache - 让你的php性能提升 50%
性能提升原理:减少文件解析的时间. 我们都知道,程序要运行,得有一个编译或者解析的过程,编译或解析之后的代码才是机器可以运行的. 而 php 是一种解析性语言,在使用php来处理http请求的时候,每 ...
- Netty系列之Netty百万级推送服务设计要点
1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...
- Netty_Netty系列之Netty百万级推送服务设计要点
1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...
- 【netty】Netty系列之Netty百万级推送服务设计要点
1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...
- Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)
补遗 关于网络接收的软中断负载均衡,已经有了成熟的方案,可是该方案并不特别适合数据包转发,它对server的小包处理非常好.这就是RPS.我针对RPS做了一个patch.提升了其转发效率. 下面是我转 ...
- Linux转发性能评估与优化(转发瓶颈分析与解决方式)
线速问题 非常多人对这个线速概念存在误解. 觉得所谓线速能力就是路由器/交换机就像一根网线一样. 而这,是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机,存在一个核心延迟操作,这 ...
- Netty系列之Netty百万级推送服务设计要点(转)
1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题.问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为 ...
随机推荐
- Python - 读取CSV文件发现有重复数据,如何清洗以及保存为CSV文件,这里有完整的过程!!!! 片尾有彩蛋
语言:Python 功能: 1.清洗CSV文件中重复数据. 2.保存为CSV文件 大体流程: 1.首先观察CSV文件中的数据布局格式如何? 2.通过csv包读取数据.并根据规则使用continue,来 ...
- ExtJS的使用方法汇总(1)——配置和表格控件使用
在网上差一些关于ExtJS的相关资料,看到这篇博客写的不错,拿出来分享一下! 博客文章:ExtJS的使用方法汇总(1)--配置和表格控件使用 ExtJS的使用方法汇总(2)- ...
- YbtOJ 做题记录-总集版
感觉每章都开一篇博客过于占据版面 (以及写不动题了想摸一会鱼 于是就有了您现在看到的这篇博客. upd:不知道啥时候咕了.懒得补,那就继续咕着吧(bushi 基础算法 第1章 递推算法 第2章 贪心算 ...
- P4870 [BalticOI 2009 Day1]甲虫 题解
题目链接 简要题意 在一个数轴上有 \(n\) 滴露水,每滴露水初始水量为 \(m\),每秒会蒸发一滴水,一个甲虫初始在原点,速度为 1,水能瞬间喝完,问它最多能喝到几滴水. 题目分析 对于这种移动区 ...
- js正则表达式把页面中的p标签全部换成div
documentdocument.body.innerHTML = document.body.innerHTML.replace(/<[\/]?(p)(:?\s+(:?class|style) ...
- 当代免疫学小史-第一章(根据讲谈社Blue Backs系列2009年第一版第三次印刷版本翻译)
作者 -岸本忠三:前大阪大学校长.IL-6发现人 -中嶋彰:科普作家 第1章 石坂往事 巴尔的摩的大雪 1970年匆匆而过,这一年举行了大阪世博会,三岛由纪夫也是在这一年切腹自杀的.1971年新年第一 ...
- BI 数据可视化平台建设(2)—筛选器组件升级实践
作者:vivo 互联网大数据团队-Wang Lei 本文是vivo互联网大数据团队<BI数据可视化平台建设>系列文章第2篇 -筛选器组件. 本文主要介绍了BI数据可视化平台建设中比较核心的 ...
- Webpack.devServer 配置项如何使用?附devServer完整示例
前言: 我们在平常本地开发时,可能经常需要与后端进行联调,或者调用一些api,但是由于浏览器跨域的限制.开发与生产环境的差异.http与https等问题经常让联调的过程不够顺畅.所以本文介绍一下web ...
- Keepalived+Nginx高可用案例(抢占式与非抢占式)
(1)下载安装Keepalived源码包 Keepalived官网源码包下载地址 在服务器上解压 tar -xf keepalived-2.2.8.tar.gz 安装相关前置依赖 yum -y ins ...
- Vue + Element UI 实现复制当前行数据功能(复制到新增页面组件值不能更新等问题解决)
1.需求 使用Vue + Element UI 实现在列表的操作栏新增一个复制按钮,复制当前行的数据可以打开新增弹窗后亦可以跳转到新增页面,本文实现为跳转到新增页面. 2.实现 1)列表页 index ...