本屆挑戰賽的評測環節徹底使用了雲上的產品和服務,是一場真正意義上的雲端賽事。可能有人會說:這有什麼了不得?其實否則,縱觀每屆挑戰賽,這仍是第一次徹底拋棄了阿里集團內部的專有系統而徹底擁抱公共雲,這是具備里程碑意義的一次改變。web
正因如此,本屆比賽才得以用到更多雲原生的產品和服務,選手可以在比賽中使用性能測試 PTS ,以及一個徹底隱藏在挑戰賽評測系統背後的全新產品 - Web 應用託管服務(Web+)。編程
性能測試 PTS,訪問這裏。
Web 應用託管服務(Web+),訪問這裏。架構
相信參加了去年比賽以及在本地構建過評測環境的選手必定對 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+ 完成開通之後,在首頁的右下角就有一個「一鍵建立第五屆中間件性能挑戰賽評測環境」的交互式教程,選手可使用該教程建立一個和官方評測環境如出一轍的環境用於測試,無需擔憂搭建測試環境須要耗費的時間與精力,也不用擔憂測試環境與評測環境的差別致使的問題了。
怎麼樣,就問你心動不心動?
點一下這裏,一塊兒來參與第五屆中間件性能挑戰賽吧!
本文做者:
殷成濤,花名風起,阿里雲 PTS 開發工程師,專一於性能壓測與高可用架構領域。
唐睿,花名奧陌,阿里雲 EDAS 和 Web+ 產品經理,專一於應用託管類的產品設計和相關中間件技術。
本文做者:中間件小哥
本文爲雲棲社區原創內容,未經容許不得轉載。