本届挑战赛的评测环节完全使用了云上的产品和服务,是一场真正意义上的云端赛事。可能有人会说:这有什么了不起?其实不然,纵观每届挑战赛,这还是第一次完全抛弃了阿里集团内部的专有系统而完全拥抱公共云,这是具有里程碑意义的一次改变。
正因如此,本届比赛才得以用到更多云原生的产品和服务,选手能够在比赛中使用效能测试 PTS ,以及一个完全隐藏在挑战赛评测系统背后的全新产品 - Web 应用托管服务(Web+)。
效能测试 PTS,访问这里(https://cn.aliyun.com/product/pts?spm=a2c4e.11153940.0.0.289e2eef862iQv)。
Web 应用托管服务(Web+),访问这里(https://www.aliyun.com/product/webx?spm=a2c4e.11153940.0.0.289e2eef862iQv)。
相信参加了去年比赛以及在本地构建过评测环境的选手一定对 wrk 有所认知,wrk 作为一款现代HTTP 基准测试工具,能够在多核 CPU 上执行时产生显著负载,同时结合lua指令码能够定制化统计压测结果,但 wrk 在去年的评测时也存在一些问题,如:
PTS 的“杀器”
为了给选手更好的评测体验,今年比赛我们选取了阿里云的 PTS(效能测试服务平台)作为评测工具,它主要有以下优势:
总的来说,PTS 作为一款阿里云自研的压测平台,在比赛中不仅是一个效能压测工具,同时也是选手分析、定位效能瓶颈的得力助手。受限于题目的评测需求,PTS 的诸多“杀器”尚未体现,如 RPS模式支援、流量地域定制、定时压测、SLA(服务等级协议)等都是业界领先的功能。欢迎大家试用。
与 PTS 不同,Web+ 对选手来说几乎不可见,却在每次提交程式码以后为其默默准备评测环境。如果参加了去年挑战赛的选手们,尤其是动手搭建过评测环境甚至是阅读过搭建评测环境程式码的开发者们,必定会了解,去年比赛的评测环境完全是通过 Python 与 Shell 指令码拉起的,有大量的程式码用于构建 Docker 映象、启动服务并实施压测等,这还不包括在程式码外提前进行的环境资源申请与配置。
Web 应用托管服务(Web+)正如其名称所示意的,正是用来解决 Web 应用托管中遇到的一系列问题。这些问题包括但不限于:
而本届挑战赛正是综合利用了以上的这些功能特性。
云端资源的申购与编排
所谓云端资源,就是我们通常所说的 ECS、VPC、SLB 和 RDS 等,而申购与编排,就是从申请和购买开始,将各种孤立的资源按照正确的方式排列组合,最终形成一套可用系统的过程。这并不是一个新颖的产品概念,与 HashiCorp 的 Terraform、AWS 的 Cloud Formation 和阿里云自家的 ROS 都是同型别的产品,这类产品有一个通用的术语叫做 Infrastructureas Code(基础设施即程式码)。不难想象就是用程式码来指代基础设施。当一整套基础设施环境都可以以程式码的方式进行固化与重放,那么这份程式码就与基础架构基本上等同了。如此所带来的好处就是程式码易于阅读、可以被版本管理也便于分发和复制。Web+ 也是利用了同样的技术,通过配置描述档案(Wpfile)这份程式码来对映和编排一整套完整的基础设施环境。
软件执行时环境的安装与配置
在基础设施搭建完成以后,距离使用者的应用程序可以执行还有一个中间环节,即软件执行时的安装与配置。根据应用所使用的公共类库、语言、应用容器和框架的不同,这部分的操作将会有很大的差别。为了解决这部分差异,Web+ 引入了技术栈的概念——即操作系统、语言、容器和其他辅助软件的集合。根据一套标准的技术栈扩充套件体系,Web+ 可以非常容易的支援任意多种程式语言,不限于当前已经提供的这些。举个 Java 的例子,如果一个技术栈仅仅包含 Linux 与 OpenJDK,那么其将是一套最简单的基于 Linux 系统的 Java 执行时技术栈。而如果在此之上又增加了一个 Tomcat,那么就是可以将应用执行在 Tomcat 容器中的技术栈。同理可以支援 Linux + OpenJDK + Jetty 的技术栈、Windows + .netFramework + IIS 的技术栈、Linux + Node.js 的技术栈等等。
应用程序的启停与维护
即便有了技术栈,应用程序还是不保证能可以正常启动,就算正常启动的也不一定能正常执行,而就算正常运行了也不一定是处于效能最佳的状态,这些都是应用托管所服务需要解决的核心问题。使用者的应用除了依赖技术栈以外,还有可能依赖一些特殊的元件,这些元件需要在应用启动之前被正确安装与配置。即便是不需要依赖其他元件,大部分的应用也需要解压或安装(例如 Windows 系统),这些过程必须由使用者根据应用的不同自行制定,而 Web+ 能为使用者提供的是各种指令码的挂载点,通过这些挂载点,使用者可以完成各种自定义操作。然而,应用启动成功以后,其能否正常执行跟应用的系统架构有关,如果系统需要一套分散式环境,那么整个分散式环境的配置也是极其重要的。如应用埠、健康检查、反向代理、SLB 监听和转发策略等等,都是需要进行细致调整的。Web+ 能够帮助使用者尽量遮蔽一些复杂的配置工作,但某些核心的东西还是不得不由使用者自行负责操作。最后应用终于执行起来以后,我们还需要对应用的执行状态和效能情况进行监控,此时就需要用到监控和诊断的能力。这些能力在 Web+ 中是开箱即用的,免去了使用者单独搭建与运维的成本开销。
部署环境模板的分发与重放
最后,本届挑战赛中最重点使用的一个功能便是部署环境模板的分发与重放。我们提供了一个用于一键拉起挑战赛整个评测环境的环境模板,基于对此模板的重放,挑战赛的执行指令码便可以非常简便的一遍又一遍的建立并释放环境,这在已有的挑战赛历史中是不敢想象的,搭建一套评测环境是个多么耗费时间和精力的过程,一旦完成恨不得在比赛结束之前就再也不会对其进行变更。这样带来的问题有很多,比如环境的变配非常不方便,无论是由于一些程式缺陷或需求变更,对一整个评测环境进行配置变更想想都是一件非常繁琐的工作。
其次因为这些环境在搭建之初就被固化了,因此不论这些评测环境是否有被选手使用,他们都不得不一直处于执行中的状态,直到比赛结束。这显然是一种资源的不合理分配,在使用者提交繁忙的时段,因丛集处理能力的不足需要排队,而在使用者提交的闲暇时段,这些资源又被遗憾的浪费了。而基于环境模板的分发与重放功能便可彻底解决这些问题。在预算允许的情况下,理论上可以在库存充足的情况下搭建任意多的评测环境,用完之后随即释放,这样如果没有任何一个使用者提交评测,则系统不会浪费一丝一毫的资源。
盘他!
综上,便是 PTS 和 Web+ 两大黑科技在本届挑战赛中所扮演的角色。Web 应用托管服务(Web+)于2019 年 6 月 14 日同第五届中介软件效能挑战赛正式开通评测一起开放公测。选手只需注册一个阿里云的账号,并完成实名制认证即可试用。另外登入 Web+ 完成开通以后,在首页的右下角就有一个“一键建立第五届中介软件效能挑战赛评测环境”的互动式教程,选手可以使用该教程建立一个和官方评测环境一模一样的环境用于测试,无需担心搭建测试环境需要耗费的时间与精力,也不用担心测试环境与评测环境的差异导致的问题了。
怎么样,就问你心动不心动?
点一下这里(https://tianchi.aliyun.com/markets/tianchi/aliware2019?spm=a2c4e.11153940.0.0.289e2eef862iQv),一起来参与第五届中介软件效能挑战赛吧!
本文作者:
殷成涛,花名风起,阿里云 PTS 开发工程师,专注于效能压测与高可用架构领域。
唐睿,花名奥陌,阿里云 EDAS 和 Web+ 产品经理,专注于应用托管类的产品设计和相关中介软件技术。
---------------------------------------
本文作者:中介软件小哥
原文连结:https://yq.aliyun.com/articles/706949?utm_content=g_1000065639
本文为云栖社群原创内容,未经允许不得转载。





























