二級排程架構 通過隔離資源獲取與任務來解決這個問題。這樣任務排程邏輯可以針對特定的應用,這也可以保持在集群間共享的能力。mesos的集群管理在這方面是先驅, 同時yarn支援一部分功能。在mesos,資源是應用級別排程器提供的(被挑選和選中),而yarn允許應用級別排程器請求資源(在返回中得到配額)。 圖1b展示了基本思想:負責負載的排程器(s0-s2)與資源管理器進行互動,資源管理器為集群資源的每個負載刻畫出動態分割槽。這種方式可以支援定製化,針對負載的排程策略。
現在,分離了關注點的兩級架構帶來了一些缺點:應用級排程器丟掉了一些知識,例如,他們看不到所有可能的資源點,他們基本看不到這些與資源管理器元件提供的資源獲取(mesos)或分配(yarn)相關的選項。這有一些缺點:
優先順序搶占(高優先順序任務踢掉低優先順序的)的實現變得困難了:在乙個基於提供的模型裡,執行任務的資源對於上一級的排程器是不可見的;在乙個基於請求的模型裡,低階別的資源管理器必須理解搶占策略(很可能與應用相關)。
排程器不能從負載執行中來考慮降級資源(例如,「吵鬧的鄰居」搶占了io資源),因為他們看不到他。
應用級排程關心下游資源的許多不同方面,但他們只有資源管理器的提供/請求介面。這個介面很容易變得很複雜。
共享狀態架構 將這個問題轉化成分布式模型,多個集群狀態的副本會被應用級排程器獨自更新,就像圖1c展示的。在本地更改後,排程器發起乙個樂觀更新事物去更新共享的集群狀態。這個事務可能會失敗,很明顯:乙個其他的排程器可能同一時間也在做乙個衝突的變動。
最知名的使用共享狀態的設計就是google的omega,和微軟的apollo,還有hashicorp的nomad容器排程器。以上豆漿共享集群狀態是現在乙個單點位置:omega的「cell state」,apollo的「resource monitor」,nomad的「plan queue」。apollo與其他兩個不同的是它的共享狀態是唯讀的,排程事務直接提交給集群機器。機器自己檢查衝突並選擇接受或拒絕變動。這讓apollo可以在共享狀態暫時不可用時進行排程。
乙個「邏輯」共享狀態設計可以歸檔同時不需要實現整個的集群狀態。這種方式(類似apollo做的),每個機器維護它們自己的狀態並且將更新傳送給不同的agent,如排程器,機器健康監控,資源監控系統。每個機器自己的本地狀態的檢視現在組成了乙個全域性共享狀態的分片。
當然,共享狀態架構也有一些缺點:他們必須與狀態資訊一起工作(不像中心式排程器),也會遇到高層爭搶時降級排程效能(儘管其他架構也會遇到)。
集群排程架構的變革 一
原文 集群排程器是現代基礎設施很重要的元件,尤其在最近幾年有很大發展。架構從單體應用的設計進化成更靈活,分散的,分布式的設計。但是,目前很多開源能提供的還是單體應用或缺了關鍵特性。這些特性對於真實世界的使用者很重要,因為他們需要很高的使用率。這是我們發布的第一篇關於在大集群上進行任務排程的系列文章,...
Solr集群的架構
架構圖最近要搭乙個solr集群,我們先來了解一下架構。架構搭建需要用到solr zookeeper。看以下結構 要完成的集群結構如下圖 我們來了解一下solr和zookeeper。solr zookeeper 在此架構中,zookeeper扮演了三個功能,分別是集群管理,配置檔案的集中管理和分布式鎖...
BoCloud花磊 專注金融IT架構的變革
1 31 6 52 作為雲計算初創企業,博雲專注於金融行業,助力金融it架構的變革。bocloud花磊 專注金融it架構的變革 q 雲計算大會進行了第二天,提前稍微給我們透一點,下午帶來什麼樣的演講。花磊 今天下午我在金融分論壇將分享我們博雲在金融行業的一些感悟和一些解決方案。大家都知道金融方案進行...