99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

京東百萬級調度系統(tǒng)Buffalo架構解密

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-07-24 14:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、調度系統(tǒng)簡介

Buffalo調度是一款京東自主研發(fā)的分布式DAG作業(yè)調度系統(tǒng)。為京東的數(shù)據(jù)開發(fā)工程師、算法工程師、數(shù)據(jù)分析師等用戶提供了離線作業(yè)的編排&調試、監(jiān)控運維、DAG調度等系統(tǒng)能力,致力于打造行業(yè)領先的穩(wěn)定高效、產品簡潔高體驗、任務監(jiān)控全面、資源容器化、系統(tǒng)能力開放化的ETL調度系統(tǒng)。

在京東調度系統(tǒng)核心面臨的挑戰(zhàn)有以下幾個:

1.業(yè)務復雜帶來的依賴關系復雜:復雜的數(shù)據(jù)鏈路,使得部分任務有數(shù)百、甚至上千個上下游,層級多達數(shù)十層??缣煲蕾?、數(shù)據(jù)回刷、月度匯總等業(yè)務場景,需任務間依賴存在大小周期依賴、跨天依賴等復雜場景,任務依賴關系數(shù)據(jù)構成一個龐大且復雜的有向無環(huán)圖。

2.業(yè)務體量大且穩(wěn)定性&性能要求高:目前平臺有數(shù)十萬任務,百萬+依賴關系,日均百萬+調度頻次,不僅關系復雜、執(zhí)行量大,且系統(tǒng)的任何細微異常,都可能導致數(shù)據(jù)鏈路異常,核心數(shù)據(jù)受損,這對調度系統(tǒng)的穩(wěn)定性和性能帶來了不小挑戰(zhàn)。

3.數(shù)據(jù)加工場景復雜需支撐豐富調度能力:支持集團多個BG業(yè)務,業(yè)務場景多樣,涉及數(shù)據(jù)采集、數(shù)據(jù)計算、數(shù)據(jù)推送、數(shù)據(jù)轉換等多種任務類型、多種執(zhí)行方式、多種觸發(fā)規(guī)則,以及控制節(jié)點、任務間的數(shù)據(jù)傳遞、數(shù)據(jù)補錄場景等,對系統(tǒng)功能的豐富度和靈活度提出新要求。

二、核心技術方案

為支撐靈活的業(yè)務加工和工作流編排場景,快速的業(yè)務發(fā)展帶來的任務量增長,以及保障整個系統(tǒng)的穩(wěn)定性,我們從易用性、穩(wěn)定性、以及高性能等方面做了很多的思考和優(yōu)化,下面我將著重從這三個方面詳細介紹。

1. 實體和編排調度模型

a) 雙層實體模型

wKgaomagotGAbof7AAFMjtOysok699.png


采用主流的雙層實體模型,雙層實體模型中,包含兩個核心概念:

?Action(環(huán)節(jié)):環(huán)節(jié)是最小粒度的執(zhí)行單位,攜帶執(zhí)行相關的信息,如腳本、參數(shù)、環(huán)境等。

?Task(任務):任務是由一個或多個環(huán)節(jié)+觸發(fā)規(guī)則構成的DAG,Task和Task之間也可以相互依賴,在外層構成一個DAG,實現(xiàn)雙層調度。

相比單層實體模型,編排能力更強,有更好的靈活性,同時對于單個業(yè)務的整合打包和管理也更友好。

b) 基于實例的調度

wKgZomagotKASOJqAAIw9FcOBI0477.png


任務定義是任務配置的載體,無狀態(tài),不可執(zhí)行,任務當?shù)竭_運行周期時,會產生相應周期的任務實例(產生實例的過程叫“實例化”),實例化時會根據(jù)任務的配置信息,包括:環(huán)節(jié)、上游依賴、數(shù)據(jù)依賴、運行周期等,生成當前周期實例,可理解為任務的一個快照,任務實例是真正可執(zhí)行、并具有狀態(tài)的對象。

基于實例的調度模式,其優(yōu)點在于:

?周期穩(wěn)定:任務的每個周期都會有實例,不會出現(xiàn)周期缺失的情況,且每個周期的實例可獨立操作

?依賴明確:任務某個周期的實例,其對上游任務實例的依賴,或者數(shù)據(jù)依賴是明確的、可預期的,同時對某個周期的數(shù)據(jù)可從整個鏈路上快速追溯,并在產生問題是可從鏈路層面快速修復。

c) 分類分級調度能力

平臺中的任務不通業(yè)務,重要性存在一定差異,為提升核心任務的保障能力,平臺提供任務分類分級管理,和基于分級的調度能力,在客戶端資源較為緊張時,會優(yōu)先保障重要業(yè)務。同時任務等級信息會透傳到底層集群,在底層計算集群層面也增加相應基于分類和等級的保障策略,保障核心業(yè)務的穩(wěn)定性。

2. 高可用架構

wKgaomagotOAXW4JAAEL8IJ7AtI325.png


buffalo整體有分三層,每一層都具備高可用架構,使得整體具備高可用和容災能力

?a) Manager管理層:

?主要提供產品化管理能力,包括任務的創(chuàng)建、任務管理、任務運維等,管理端無狀態(tài),可橫向擴展,負載對外提供服務

?b) 高可用Scheduler:

?也叫NameNode是Buffalo核心調度引擎,負責任務實例的周期生成,以及基于DAG的雙層任務實例的調度、客戶端資源的調度(物理資源、彈性資源)、任務狀態(tài)的處理等。

?整體采用多活+主備高可用架構,多個scheduler會通過數(shù)據(jù)分片負載處理任務,同時對于任務狀態(tài)消息進行冪等處理,其中資源調度模塊采用主備模式,以便支撐靈活和高效的資源調度能力。當一個節(jié)點故障時,其他節(jié)點會監(jiān)測到節(jié)點下線,并自動觸發(fā)接管邏輯,將異常節(jié)點任務接管處理,保障故障節(jié)點上的任務執(zhí)行不受影響。

?c) 容錯執(zhí)行層:

?執(zhí)行層的核心職責是負責任務啟動執(zhí)行,并監(jiān)聽任務執(zhí)行結果、采集任務日志、上報任務狀態(tài),執(zhí)行層支持物理機和基于k8s的容器化資源兩種模式。

?物理機:部署worker(也稱TaskNode)長進程,任務以獨立進程方式運行,多個worker構成節(jié)點組對(虛擬節(jié)點)外服務,避免單點故障問題。同時worker本身支持消息重傳、cgroup資源隔離等高可用特性。

?k8s彈性資源:與原生k8s對接,任務以短周期pod方式執(zhí)行,任務結束時pod銷毀,天然具備高可用特性,同時具備更精細化的資源管理、差異化執(zhí)行環(huán)境的動態(tài)構建能力。

3. 高性能

前面提到調度系統(tǒng)中隨著任務量的增長,業(yè)務復雜度的提升,需要調度執(zhí)行的DAG實例梳理,以及DAG的復雜度都會不斷提升,buffalo主要從以下幾個方面來做到高容量、低延遲的編排和調度。

1) 水平擴展

如上高可用架構部分介紹,調度引擎采用多活架構,可水平擴展,不同服務之間通過數(shù)據(jù)哈希分片,將任務負載分布到多臺服務進行調度,同時各服務通過執(zhí)行批次和狀態(tài)進行冪等處理,保障任務執(zhí)行的唯一性。

2) 事件驅動

wKgZomagotSATdZBAAFH1Vj3FEE462.png


a. 定時輪詢(如左圖)

傳統(tǒng)的任務執(zhí)行方式大多采用定時輪詢的方式,這種方式需要定時查詢所有待執(zhí)行的任務實例,然后逐一校驗任務實例的依賴條件是否滿足(如任務依賴、數(shù)據(jù)依賴、并發(fā)限制等),這種方式在面臨大數(shù)據(jù)量任務時,有幾個核心問題:

?遍歷耗時:系統(tǒng)中可能有非常多的任務待執(zhí)行(有些滿足條件、有些不滿足條件),這樣每次獲取的任務列表會非常長(可能數(shù)十萬或百萬),這樣遍歷一遍非常耗時

?大量無用計算:在這些獲取的任務列表中,每個任務都需要進行多種條件校驗,且只有少數(shù)任務是滿足執(zhí)行條件,絕大部分的校驗是無用校驗

b. 基于事件驅動(如右圖)

相比定時輪詢,事件驅動不會采用定時拉取、全量校驗的方式,而是在任務所依賴條件的狀態(tài)發(fā)生變更時,才會基于事件做出相應的條件計算和校驗動作,這樣可以有效避免定時輪詢面臨的兩個核心問題。同時針對不同的事件類型,可以分別進行異步并行處理,有效提升整體的處理性能。

3) 內存調度

wKgaomagotWANEf7AACmlSsKHWg031.png


前面提到Buffalo具備在物理機集群和k8s集群上啟動任務執(zhí)行的能力,所以需要具備這兩種資源的管理和資源調度能力,資源調度的性能也是影響任務分發(fā)時效的關鍵部分。

調度引擎namenode采用的是多活的高可用架構,如果資源調度部分也采用該架構(如左圖),那么涉及到同一資源的并發(fā)訪問和修改的問題,進而引入分布式鎖和外部存儲,這樣整體的性能很難達到理想的目標。

因此,我們在namenode多活架構的基礎上,將資源調度部分做了一個主備架構的處理(如右圖),會從多個namenode里選擇一個作為主資源調度器,其他作為熱備,所有namenode的任務資源請求都由主節(jié)點進行處理,這樣主節(jié)點在內存中保存了所有的資源信息,資源調度過程在內存中就可進行,避免了分布式鎖和對外部存儲的依賴,性能有大幅提升。

4) 冷熱數(shù)據(jù)分離

wKgaomagotiAVJ3_AAEBplax6MU778.png


當系統(tǒng)中任務量較大,任務執(zhí)行產生的實例數(shù)據(jù)會快速增長,當前buffalo每日的實例數(shù)據(jù)增量接近百萬,隨著任務量的增長還會持續(xù)增長,如果沒有適當?shù)姆桨竵硖幚?,?shù)據(jù)庫很難支撐如此快速的數(shù)據(jù)增長。

調度系統(tǒng)中的任務有個明顯特征 -定時,就是任務會定時執(zhí)行,執(zhí)行完成后的實例,除人為干預外其狀態(tài)不會再自動發(fā)生變更,這部分數(shù)據(jù)一般只會做查詢,所以這部分數(shù)據(jù)可以做獨立存儲。我們將狀態(tài)還會發(fā)生變更或頻繁操作的數(shù)據(jù)稱作熱數(shù)據(jù),將這些已經執(zhí)行結束且基本只有查詢需求的數(shù)據(jù)稱作冷數(shù)據(jù),并將冷數(shù)據(jù)單獨存儲。

當冷熱數(shù)據(jù)分離后,有三個核心問題需要解決:

1)數(shù)據(jù)結轉

任務實例執(zhí)行完成,處于結束狀態(tài)的實例都可以被結轉,目前采用定時結轉的策略。為避免冷數(shù)據(jù)單表數(shù)據(jù)量過大,結轉規(guī)則可以按照季度、月或則更小周期進行拆分存儲。

2) 數(shù)據(jù)定位

當數(shù)據(jù)結轉到冷數(shù)據(jù)表后,這些實例的狀態(tài)不會發(fā)生變更,單可能還會被未執(zhí)行的實例所依賴,用戶也可能會對這些實例做檢索操作,所以這些實例需要能從冷數(shù)據(jù)表中快速被定位。

?索引表:數(shù)據(jù)結轉到冷數(shù)據(jù)表時,會根據(jù)冷數(shù)據(jù)表的分區(qū)粒度,在索引表記錄各冷分區(qū)表中的數(shù)據(jù)范圍,如計劃運行時間在2023-01-01 至 2023-03-31的數(shù)據(jù)存儲在2023Q1分區(qū)表,這樣在定位時可以圈定數(shù)據(jù)范圍,避免全量掃描。

?數(shù)據(jù)定位:因實例數(shù)據(jù)是有周期性的,有非常強的時間特性,所以可以結合任務實例的計劃運行時間,和索引表的數(shù)據(jù)范圍,快速定位任務某個范圍的實例所在的分區(qū)。

3)冷數(shù)據(jù)操作

冷數(shù)據(jù)被操作的幾率比較低,但也存在操作的可能性,比如歷史實例的重跑、強制成功等操作。為了保持調度引擎架構的簡單性,所有相關的任務執(zhí)行的處理,都是基于當前表(熱表),所以為了能保障被結轉的冷數(shù)據(jù)和熱數(shù)據(jù)一樣支持所有操作,冷數(shù)據(jù)被操作時會從冷數(shù)據(jù)表恢復至熱數(shù)據(jù)表,從而實現(xiàn)與熱數(shù)據(jù)相同的效果。

4、開放能力

開放API:通過Http協(xié)議進行開放,支持任務配置管理、任務實例操作、狀態(tài)查詢、日志查詢等能力,通過藏經閣進行開放來服務業(yè)務

開放事件:基于JDQ異步消息的方式將任務狀態(tài)、實例狀態(tài)進行開放,聯(lián)動業(yè)務個性化處理。狀態(tài)發(fā)生變更及時同步,確保業(yè)務觸達的及時性

三、未來規(guī)劃

Buffalo調度系統(tǒng)仍在持續(xù)的優(yōu)化和迭代升級,不僅提供更好的用戶體驗、更極致的性能,也包括容器化能力、插件化擴展能力、開放能力、精細化的資源管理能力等,希望大家提出更好的想法和建議,一起打造穩(wěn)定、高效、易用的調度平臺。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 調度系統(tǒng)

    關注

    0

    文章

    48

    瀏覽量

    9699
  • 架構
    +關注

    關注

    1

    文章

    528

    瀏覽量

    25996
  • DAG
    DAG
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8321
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    御控縣級供水調度系統(tǒng):數(shù)字化整合,構建全流程智能調度體系

    御控縣級供水調度系統(tǒng)的建設以數(shù)據(jù)整合和智能決策為核心,通過物聯(lián)網、大數(shù)據(jù)等技術,實現(xiàn)從水源地到用戶終端的全流程監(jiān)控與優(yōu)化調度,提升供水安全性和經濟性。
    的頭像 發(fā)表于 07-17 15:41 ?102次閱讀
    御控縣級供水<b class='flag-5'>調度</b><b class='flag-5'>系統(tǒng)</b>:數(shù)字化整合,構建全流程智能<b class='flag-5'>調度</b>體系

    京東電商 API 接口,訂單管理高效解決方案!

    輕松提升業(yè)務效率。 一、什么是京東電商 API 接口? 京東電商 API 接口是京東開放平臺提供的一套標準化接口,允許第三方系統(tǒng)(如ERP、CRM或自定義應用)通過編程方式訪問
    的頭像 發(fā)表于 07-04 16:12 ?169次閱讀
    <b class='flag-5'>京東</b>電商 API 接口,訂單管理高效解決方案!

    深度剖析 RT-Thread 線程調度流程

    RT-Thread調度第一個線程的主要流程分如下:rtthread_startup:RTT的啟動函數(shù),主要負責板驅動,調度器,系統(tǒng)線程初始化,啟動
    的頭像 發(fā)表于 06-25 18:24 ?714次閱讀
    深度剖析 RT-Thread 線程<b class='flag-5'>調度</b>流程

    安全生產調度管理系統(tǒng)的核心功能模塊

    調度、決策支持的全鏈條安全管理體系。 一、系統(tǒng)基本架構 安全生產調度 管理系統(tǒng)采用"云-邊-端"協(xié)同的三層技術
    的頭像 發(fā)表于 05-16 15:25 ?190次閱讀

    INT-based Routing(基于遙測的智能路由)如何重構AI集群流量調度?

    在GPT-4o參數(shù)規(guī)模突破10萬億、千卡集群成為AI訓練標配的今天,全球互聯(lián)網正經歷著前所未有的流量風暴。當單次模型訓練可產生相當于YouTube全球三日流量的數(shù)據(jù)洪流,當分布式推理系統(tǒng)要求微秒延遲保障,傳統(tǒng)網絡架構的流量
    的頭像 發(fā)表于 05-12 17:06 ?403次閱讀
    INT-based Routing(基于遙測的智能路由)如何重構AI集群流量<b class='flag-5'>調度</b>?

    EM儲能網關 ZWS智慧儲能云應用(11) — 一架構 主從架構

    ZWS智慧儲能云針對儲能場景下不同的架構體系進行了兼容,可以適配用戶面臨的復雜現(xiàn)場環(huán)境,滿足更深層次的管理和維護需求。簡介儲能系統(tǒng)包含PCS、BMS、EMS等多個組件,不同儲能架構管理和決策方式也有
    的頭像 發(fā)表于 04-17 13:00 ?293次閱讀
    EM儲能網關 ZWS智慧儲能云應用(11) — 一<b class='flag-5'>級</b><b class='flag-5'>架構</b> 主從<b class='flag-5'>架構</b>

    京東百萬調度系統(tǒng)(Buffalo)架構解密

    作者:京東零售 姬廣滕 一、調度系統(tǒng)簡介 Buffalo調度是一款京東自主研發(fā)的分布式DAG作業(yè)
    的頭像 發(fā)表于 03-07 09:53 ?421次閱讀
    <b class='flag-5'>京東</b><b class='flag-5'>百萬</b><b class='flag-5'>級</b><b class='flag-5'>調度</b><b class='flag-5'>系統(tǒng)</b>(<b class='flag-5'>Buffalo</b>)<b class='flag-5'>架構</b><b class='flag-5'>解密</b>

    構建綜合指揮調度系統(tǒng)的重要性

    構建綜合指揮調度系統(tǒng)的重要性不言而喻,它對于提升應急響應速度、優(yōu)化資源配置、加強跨部門協(xié)作、提高決策效率和確保公共安全等方面都具有至關重要的作用。以下是古河云科技構建綜合指揮調度系統(tǒng)
    的頭像 發(fā)表于 02-06 16:56 ?546次閱讀

    京東方又添2家國家綠色工廠

    ● 導語 好消息!好消息!BOE(京東方)又添2家“國家綠色工廠”,分別是重慶京東方第6代柔性AMOLED生產線和合肥京東方智能制造生產線。目前,
    的頭像 發(fā)表于 01-15 18:08 ?999次閱讀

    車隊運營調度管理系統(tǒng)

    車隊運營調度管理系統(tǒng)作為無人駕駛車隊的云端大腦,承擔了打通業(yè)務層和無人駕駛車隊的重任。經緯恒潤車隊運營調度管理系統(tǒng)包含業(yè)務對接、車輛調度、作
    的頭像 發(fā)表于 01-09 10:25 ?912次閱讀
    車隊運營<b class='flag-5'>調度</b>管理<b class='flag-5'>系統(tǒng)</b>

    電力系統(tǒng)中的電功率調度方法

    電力系統(tǒng)是現(xiàn)代社會的基礎設施,它為工業(yè)、商業(yè)和居民生活提供必需的電能。電功率調度作為電力系統(tǒng)運行管理的核心,其目的是在滿足電力需求的同時,確保電網的穩(wěn)定性和經濟性。 1. 電功率調度
    的頭像 發(fā)表于 12-09 11:02 ?1410次閱讀

    京東物流-智能運輸調度系統(tǒng)方案 榮獲IF、紅點國際設計大獎

    得到智能物流運輸調度系統(tǒng)概念方案,經過投稿先后獲得設計領域國際影響力較高的IF和紅點大獎,設計質量得到國際認可。 ? ? 《智能物流運輸調度系統(tǒng)》項目是
    的頭像 發(fā)表于 11-06 11:55 ?746次閱讀
    <b class='flag-5'>京東</b>物流-智能運輸<b class='flag-5'>調度</b><b class='flag-5'>系統(tǒng)</b>方案 榮獲IF、紅點國際設計大獎

    京東APP百億商品與車關系數(shù)據(jù)檢索實踐

    作者:京東零售 張強 導讀 本文主要講解了京東百億商品車型適配數(shù)據(jù)存儲結構設計以及怎樣實現(xiàn)適配接口的高性能查詢。通過京東百億級數(shù)據(jù)緩存架構
    的頭像 發(fā)表于 10-18 14:14 ?1168次閱讀
    <b class='flag-5'>京東</b>APP百億<b class='flag-5'>級</b>商品與車關系數(shù)據(jù)檢索實踐

    京東廣告投放平臺整潔架構演進之路

    作者:京東零售 趙嘉鐸 前言 從去年開始京東廣告投放系統(tǒng)做了一次以領域驅動設計為思想內核的架構升級,在深入理解DDD思想的同時,我們基于廣告投放業(yè)務的本質特征大膽地融入了自己的理解和改
    的頭像 發(fā)表于 09-18 10:26 ?1230次閱讀
    <b class='flag-5'>京東</b>廣告投放平臺整潔<b class='flag-5'>架構</b>演進之路

    京東小程序數(shù)據(jù)中心架構設計與最佳實踐

    一、京東小程序是什么 京東小程序平臺能夠提供開放、安全的產品,成為品牌開發(fā)者鏈接京東內部核心產品的橋梁,致力于服務每一個信任我們的外部開發(fā)者,為不同開發(fā)能力的品牌商家提供合適的服務和產品,讓技術開放
    的頭像 發(fā)表于 08-08 11:20 ?690次閱讀
    <b class='flag-5'>京東</b>小程序數(shù)據(jù)中心<b class='flag-5'>架構</b>設計與最佳實踐