千家信息网

idou老师教你学Istio 04:Istio性能及扩展性介

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要
千家信息网最后更新 2025年12月02日idou老师教你学Istio 04:Istio性能及扩展性介

Istio的性能问题一直是国内外相关厂商关注的重点,Istio对于数据面应用请求时延的影响更是备受关注,而以现在Istio官方与相关厂商的性能测试结果来看,四位数的qps显然远远不能满足应用于生产的要求。从发布以来,Istio官方也在不断的对其性能进行优化增强。同时,Istio控制面的可靠性是Istio用于生产的另一项重要考量标准,自动伸缩扩容,自然是可靠性保证的重要手段。下面我们先从性能测试的角度入手,了解下Istio官方提供的性能测试方法与基准,主要分为以下四个方面展开。

一、函数级别测试

Istio提供了函数级别的性能测试用例,开发者可用更好的有针对性的进行性能优化,这里不做展开,感兴趣的朋友可用参考:

https://raw.githubusercontent.com/istio/istio/release-1.0/mixer/test/perf/singlecheck_test.go

二、端到端测试基准

为了更好的跟踪Istio的性能问题,Istio提供了一个专门用于Isito性能测试的测试工具--Fortio。你可以通过kubernetes集群,轻而易举的将Forito部署起来,测试工具的安装链接如下:

https://github.com/istio/istio/tree/release-1.0/tools#istio-load-testing-user-guide。

下图是测试工具的组织结构图,其中上半部分为Istio服务网格管理的两个服务S1与S2,其中S1服务关掉了mixer上报功能(mixer遥测功能实现方案一直备受争议,业界普遍认为sidecar向mixer上报遥测数据一定程度上损害了sidecar的请求转发能力),请求通过ingressgateway流入系统,再经由sidecar分发到各个服务,是典型的Istio服务访问方式。下半部分为经典的kubernetes集群中的服务访问方式,请求经由k8s的proxy的转发,负载均衡到各个pod。两者的对比也就展示了Istio访问模式与经典模式相比,性能方面的损耗,下面介绍一下Fortio的几个功能点:

a)Fortio是一个快速,小巧,可重复使用,可嵌入的go库以及命令行工具和服务器进程,该服务器包括一个简单的Web UI和结果的图形表示;

b)Fortio也是100%开源的,除了go和gRPC之外没有外部依赖,能够轻松地重现Istio官方性能测试场景也能适应自己想要探索的变体或场景;

c)Fortio以每秒指定的qps对服务进行压测,并记录影响时延的直方图并,计算百分比,平均值,tp99等统计数值。

Fortio在kubernetes中的安装步骤:

kubectl -n fortio run fortio --image=istio/fortio:latest_release --port=8080

kubectl -n fortio expose deployment fortio --target-port=8080 --type=LoadBalancer

三、真实场景下测试基准

Acmeair(又名BluePerf)是一个用Java实现的类似客户的微服务应用程序。此应用程序在WebSphere Liberty上运行,并模拟虚拟航空公司的运营。

Acmeair由以下微服务组成:

a) Flight Service检索航班路线数据。预订服务会调用它来检查奖励操作的里程(Acmeair客户忠诚度计划)。

b) 客户服务存储,更新和检索客户数据。它由Auth服务用于登录和预订服务用于奖励操作。

c) 预订服务存储,更新和检索预订数据。

d) 如果用户/密码有效,Auth服务会生成JWT。

e) 主服务主要包括与其他服务交互的表示层(网页)。这允许用户通过浏览器直接与应用程序交互,但在负载测试期间不会执行此操作。

这个模拟航空公司的运营系统demo,能够更好的模拟在实际生产环境中的Istio应用,感兴趣的朋友可用到如下链接了解一下:https://github.com/blueperf

四、每日构建自动化测试结果

Istio与IBM会对Istio的每日构建版本进行性能测试,并将测试结果公布出来,供大家参考。自动化测试包括端对端用例fortio以及应用级别bluePerf的性能测试结果。对Isito性能感兴趣,但没有时间精力进行性能测试的朋友,可以关注一下官方的每日性能测试结果,跟踪Istio性能优化的最新进展。

● https://fortio-daily.istio.io/

● https://ibmcloud-perf.istio.io/regpatrol/

这里,我们一起来看下IBM的性能测试结果,并进行一下分析。

IBM的性能测试对比主要包括三部分,第一部分是各个Release版本之间的性能比较,其中列出了0.6.0,0.7.1,0.8.0版本的性能测试情况,这里的指标数据是qps,可以看到,前三个版本之间的数据十分相近,没有比较大的提升,且Istio与IngressOnly之间的对比可以看出,Istio造成了相当大的性能损耗,大约只能达到无Istio时百分之三十多的qps,可见,性能方面Istio还需要进一步优化。

RowRelease(A)Istio Full(B) No Mixer(C) Ingress Only(A)/(C) %(B)/(C) %
10.6.013071987380434.452.2
20.7.112942050367135.255.8
30.8.013352222370836.059.9

第二部分是当前release每日构建版本的性能情况,可以对比出每天的修改对性能方面的影响,这里我们列出一部分,更详细的信息大家可以到相应链接中查看,可以看到近期每日构建版本相较于1.0基线版本,有了一定的提升。

最后一部分是master分支的每日构建性能测试结果。可以看到,最新的master分支的性能测试结果,相较基线版本已经有了较大的提升,但是QPS损耗严重的问题依然存在,同时,千级别的QPS也不能真正满足生产需求,我们期待Istio的发展与进步。

五、Isito的可靠性与可扩展性

对控制面各组件的作用作用及故障影响进行了汇总,结果如下:

组件作用及故障影响
istio-ingressgateway对外流量入口,该组件挂掉将导致整个应用服务无法从外部访问,建议设置多实例,增强可靠性
istio-telemetry Mixer相关组件,用于采集envoy上报的遥测数据,该组件挂掉将导致各监控运维插件无法采集到数据,同时,该组件在高并发情境下,会承受较大负荷,建议设置为多实例,增强可靠性
istio-policy Mixer相关组件,用于与envoy交互,check需要上报的数据,确定缓存内容,挂掉会影响check相关功能
istio-pilot控制sidecar中envoy的启动与参数配置,即流量规则实际下发者,挂掉将会导致新策略配置失效
istio-sidecar-injector用于实现sidecar自动注入功能,挂掉将会导致sidecar无法自动注入,同时,若注入策略设置为必须注入(policy为Fail),则会导致新creating的pod无法启动
istio-citadel用于安全相关功能,挂掉则会导致认证,安全相关功能失效

a) 考量到Istio控制面的可靠性,以及对资源的有效利用,建议将重要组件设置为多实例,包括:

● ingressgateway:作为外部流量入口,服务网格管理的所有服务的对外流量,都要经过gateway才能进入到服务网格内部,与业务逻辑强相关,建议配置为多实例;

● mixer:遥测数据的搜集端,用于汇总服务网格内所有服务上报的日志、监控数据,处理数据量巨大,建议设置为多实例,并给予更多资源配置;

● 其他控制面组件运行压力并不大,可根据需要自行调整实例数。

b) 容器自动扩缩容,Istio为主要组件gateway,pilot与mixer设置了自动扩缩容策略,且策略可以在安装时配置,我们以pilot为例看一下其自动扩缩容配置,以CPU占用率55%作为阈值,进行pod实例数的扩缩容侧率:

c) 高可用(HA),可根据需要,为Istio控制面组件设置亲和性策略,使相同控制面组件的多个不同pod运行不同node上,确保Istio控制面的高可用状态,下面以pilot为例,Istio为其增加了节点反亲和策略,使pod尽可能不运行在相同架构操作系统的节点上,大家可根据需要,自行增加亲和与反亲和策略。

d) 健康检查,Istio也为控制面组件配置了健康检查策略,以保证控制面组件异常时,k8s能够将其重新拉起,同样以sidecarinjector为例,设置了启动健康检查readinessProbe与运行时健康检查livenessProbe,以确保容器正常运行:

六、总结

再次说明一下,性能与可靠性是Istio生产可用至关重要的一环,功能方面Istio已经做的十分强大,并在不断的完善发展中,但在性能与可靠性方面,Istio还有很长的路要走。其中微服务sidecar的路由转发与mixer遥测功能对请求时延的影响,是摆在Istio性能提升前面的两道障碍,我们共同努力,共同关注,望Istio早日成熟,发展壮大,扬帆起航。

性能 服务 测试 组件 数据 结果 控制 功能 可靠性 版本 策略 应用 实例 影响 配置 方面 运行 官方 建议 检查 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 拾贝网络技术 服务器和普通电脑的区别 数据库外键怎么写编码 阿里云服务器怎么联系客服 造成服务器内存过低的原因 天舞互联网科技传媒有限公司 软件开发需要哪些人员配备 简述信息在数据库的存储原理 网络安全与技术试题答案 佛山熙联网络技术有限公司 企业联系方式数据库 物联网工程发展网络技术 sql 数据库远程 信息化战争对网络安全的影响 如何向数据库添加数据记录 德化保兮软件开发 衣恋服务器 电动汽车软件开发用什么语言 文明重启怎么自己创建一个服务器 网络安全检查的组织情况 大一进入网络安全工作室 北京定制网络技术咨询项目 杭州律享互联网科技有限公司 苹果怎么还原流量数据库 服务器被运营商封禁 抚州互联网创业科技有限公司 构造数据库大数据量 万方数据库整体复查 网络安全中的黑客是谁 数据库这门课将什么问题
0