博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
idou老师教你学Istio 04:Istio性能及扩展性介绍
阅读量:7127 次
发布时间:2019-06-28

本文共 1907 字,大约阅读时间需要 6 分钟。

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

一、函数级别测试

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

二、端到端测试基准

为了更好的跟踪Istio的性能问题,Istio提供了一个专门用于Isito性能测试的测试工具——Fortio。你可以通过kubernetes集群,轻而易举的将Forito部署起来,测试工具的安装链接如下: 下图是测试工具的组织结构图,其中上半部分为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应用,感兴趣的朋友可用到如下链接了解一下:

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

Istio与IBM会对Istio的每日构建版本进行性能测试,并将测试结果公布出来,供大家参考。自动化测试包括端对端用例fortio以及应用级别bluePerf的性能测试结果。对Isito性能感兴趣,但没有时间精力进行性能测试的朋友,可以关注一下官方的每日性能测试结果,跟踪Istio性能优化的最新进展。 ● ● 这里,我们一起来看下IBM的性能测试结果,并进行一下分析。 IBM的性能测试对比主要包括三部分,第一部分是各个Release版本之间的性能比较,其中列出了0.6.0,0.7.1,0.8.0版本的性能测试情况,这里的指标数据是qps,可以看到,前三个版本之间的数据十分相近,没有比较大的提升,且Istio与IngressOnly之间的对比可以看出,Istio造成了相当大的性能损耗,大约只能达到无Istio时百分之三十多的qps,可见,性能方面Istio还需要进一步优化。

转载地址:http://uxael.baihongyu.com/

你可能感兴趣的文章
Linux系统命令Cut使用
查看>>
我的友情链接
查看>>
MySQL 游标(cursor)简单应用
查看>>
10个让朋友对你刮目相看的CoffeeScript单行代码绝技
查看>>
我的友情链接
查看>>
hadoop与spark集成开发环境
查看>>
[置顶] 关于jquery某一元素重复绑定的问题
查看>>
Android Camera2 拍照速度过慢问题
查看>>
摄像头远程监控的Vb.net实现方法(转)
查看>>
ubuntu安装nodejs
查看>>
【Web探索之旅】第一部分:什么是Web?
查看>>
man用来显示中文cman
查看>>
加快app store下载速度【网上看到的】
查看>>
Spring4.1-Application Event
查看>>
Python内置模块(一)
查看>>
利用最新新浪微博API做到桌面程序
查看>>
TRUNC函数的用法
查看>>
gre
查看>>
灵巧还是笨重?利用Textarea从浏览器复制字符到剪贴板
查看>>
CentOS 7.4利用Iptables开启远程访问
查看>>