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