聊聊調(diào)度云服務(wù)
今天聊下調(diào)度,為什么說這個,主要是最近和人討論和服務(wù)和服務(wù)之間的功能分界,被追問AWS data pipeline、AWS Step Functions和AWS Batch的區(qū)別,甚至追問Migration和pipeline的分界。因此特別寫一篇文章說一說調(diào)度。
調(diào)度(scheduler),這個詞說高大上也高大上,說low也low,看你怎么理解。理解low的會認(rèn)為這就是定時任務(wù),說高大上的知道要做好里面的難度,怎么解決***任務(wù)沖突,***資源利用其實都是很困難的事情。
聊到正題,AWS datapipeline/AWS Step Functions/AWS Batch三個服務(wù)在AWS分類里面分布放在“計算”“分析”“應(yīng)用程序服務(wù)”三個大類里面,說明這幾個服務(wù)完全都是一個層次的東西。
為什么會被人為沖突和重復(fù)呢,關(guān)鍵是這幾個服務(wù)看上去都像是調(diào)度服務(wù),負(fù)責(zé)任務(wù)的安排。下面分布來看看幾個服務(wù)都是什么?
1. AWS data pipeline
https://aws.amazon.com/cn/datapipeline/?nc2=h_m1
這個是正經(jīng)的大數(shù)據(jù)服務(wù),EMR團隊負(fù)責(zé)孵化出來。最開始核心解決的問題就是EMR服務(wù)的任務(wù)調(diào)度和數(shù)據(jù)移動,后面擴展到把大數(shù)據(jù)的相關(guān)的各個服務(wù)串接起來,解決服務(wù)和服務(wù)之間的數(shù)據(jù)移動和任務(wù)調(diào)度。
支持的服務(wù)包括DynamoDB,RDS,Redshift,S3,EC2,EMR。解決就是這些服務(wù)的周期的任務(wù)調(diào)度和數(shù)據(jù)搬遷。
服務(wù)將任務(wù)統(tǒng)一抽象叫著Activity,收費也是按照使用的activity按需計費。
這個服務(wù)解決的場景就是大數(shù)據(jù)常見的ETL/數(shù)據(jù)集成場景,不過它只提供很少的數(shù)據(jù)轉(zhuǎn)換能力,大部分是客戶自己編寫任務(wù)(Activiy)然后上傳到服務(wù)中調(diào)度,去完成業(yè)務(wù)邏輯的轉(zhuǎn)換。
2. AWS Step Functons
https://aws.amazon.com/cn/step-functions/?nc2=h_m1
step functions是16年AWS revient大會新發(fā)布的服務(wù),在這之前,AWS發(fā)布了一款A(yù)WS Lambda服務(wù),Lambda服務(wù)是一個應(yīng)用框架,使用者只需要編寫業(yè)務(wù)邏輯代碼片段(函數(shù)),放到框架中運行,而不用關(guān)心底層服務(wù)器的配置,實現(xiàn)了serverless,極大的簡化了簡單應(yīng)用開發(fā)的門檻。
但是aws發(fā)現(xiàn),當(dāng)業(yè)務(wù)代碼片段越來越多的時候,就需要有一個工具來協(xié)調(diào)和編排業(yè)務(wù)邏輯之間的依賴關(guān)系,以及管理這些代碼片段(函數(shù))的運行。這就誕生了step functions服務(wù)。
Step functions核心編排和調(diào)度的對象是Lambda服務(wù)商的邏輯代碼片段(函數(shù)),并提供可視化診斷能力,快速問題定位。
Step functions也是按需收費,這個收費是按照轉(zhuǎn)換次數(shù)來收費。(轉(zhuǎn)換是stepfunctions定義的一個概念,當(dāng)您從應(yīng)用程序工作流的一個步驟轉(zhuǎn)到下一個步驟時,您會在狀態(tài)之間進行轉(zhuǎn)換,我們將這一過程稱為狀態(tài)轉(zhuǎn)換。其實說白了,一個步驟到另外一個步驟,這個過程就是step functions幫你根據(jù)你定義的業(yè)務(wù)邏輯做的調(diào)度的過程,一次轉(zhuǎn)換就是stepfunctions幫你調(diào)度一次,然后就收你一次費用。)
去看這個step functions和AWS data pipeline內(nèi)部調(diào)度原理其實是一樣的,核心的就是DAG狀態(tài)機,但是兩者調(diào)度的對象不一樣,data pipeline調(diào)度的是hadoop任務(wù),這些任務(wù)運行本身至少是秒級以上,而step functions調(diào)度的對象是函數(shù),毫秒級別的,所以具體實現(xiàn)的時候stepfunctions會要求輕量和高效很多,內(nèi)部應(yīng)該是通過事件來傳遞狀態(tài),應(yīng)該是全內(nèi)存實現(xiàn),不像datapipeline一樣持久化要求很高。
幫助中也有描述step functions的限制,是通過token bucket來維護服務(wù)的能力。
Some Step Functions API actions are throttled using a token bucket scheme to maintain servicebandwidth.
3. AWS Batch
AWS Batch調(diào)度的對象就更粗暴和簡單,主要是HPC(AWS都是EC2)。前面有寫過一篇HPC相關(guān)的博客,可以看看:云服務(wù)讓HPC死而復(fù)生。
AWS Batch實際解決的場景是傳統(tǒng)的金融,生物,視頻轉(zhuǎn)碼等,有很多自編寫的任務(wù),需要HPC來完成,通過Batch可以簡化這些工作的實現(xiàn),實現(xiàn)一些定時的調(diào)度。
AWS Batch和前面不同的核心區(qū)別是,step functons和datapipelie對資源都不可見,解決的是任務(wù)/函數(shù)的調(diào)度,這是因為底層的大數(shù)據(jù)框架或者lambda框架本身就是分布式框架,解決的就是資源的管理和分配。AWS Batch調(diào)度的對象是HPC,所以AWS Batch和HPC綁定很緊密,核心要解決的問題就是任務(wù)并行調(diào)度到各種HPC資源上,同時可以解決一些分布式的問題。AWS聲稱可以自動分布任務(wù),推測只是根據(jù)配置簡單的做任務(wù)并行分布。
AWS Batch automatically provisions computeresources and optimizes the workload distribution based on the quantity andscale of the workloads.
這個服務(wù)本身定位為促進HPC的銷售,所以在AWS里面不收費。另外,AWS Batch 可與商用開源工作流引擎和語言集成 (如 PegasusWMS 和 Luigi),讓您能夠使用熟悉的工作流語言為批量計算管道建模。核心是解決客戶使用習(xí)慣問題。
AWS Batch調(diào)度的也是大顆粒任務(wù),核心調(diào)度能力和Data pipeline有點類似,不過和各種HPC集成,以及對工作流語言的支持是其中的關(guān)鍵。
***簡單總結(jié)一下吧。三個服務(wù)的核心功能都是調(diào)度,一些基本的調(diào)度能力,以及狀態(tài)機是可以服用,但因為其調(diào)度的對象,核心場景不同。所以底層的實現(xiàn)機制存在差異以及主要的對接能力也不太一樣,產(chǎn)品形態(tài),收費模式,以及工作側(cè)重點都不同。
【本文為51CTO專欄作者“大數(shù)據(jù)和云計算”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號獲取聯(lián)系和授權(quán)】