国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

系統(tǒng)設計面試指南之分布式任務調度

這篇具有很好參考價值的文章主要介紹了系統(tǒng)設計面試指南之分布式任務調度。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 簡介

任務是需要資源(CPU 時間、內存、存儲、網絡帶寬等)在指定時間內完成的一段計算工作。

通過智能地將資源分配給任務以滿足任務級和系統(tǒng)級目標的系統(tǒng)稱為任務調度程序。

任務調度程序:

系統(tǒng)設計面試指南之分布式任務調度

及時決定和分配資源給任務的過程稱為任務調度。

當我們在 Facebook 發(fā)表評論時。我們不會讓評論發(fā)布者等待直到那條評論被交付給所有關注者。交付被委托給一個異步任務調度程序離線完成。

在分布式系統(tǒng)中,許多任務是在用戶的單個請求的背景下運行??紤]Facebook、WhatsApp 或 Instagram 這樣的熱門系統(tǒng)有數(shù)億用戶。這些系統(tǒng)需要一個任務調度程序來處理數(shù)十億個任務。Facebook 使用 Async 根據其用戶的數(shù)十億個并行異步請求來調度其所有任務。

Async 是 Facebook 自己的分布式任務調度程序,調度其所有任務。一些任務時間敏感,如應該運行的通知用戶某項活動開始直播的任務。如果用戶在直播結束后才收到通知就沒意義了。某些任務可延遲,如向用戶提出好友建議的任務。Async 根據適當?shù)膬?yōu)先級調度任務。

2 需求

  • 可用性:系統(tǒng)應高可用以調度和執(zhí)行任務
  • 持久性:系統(tǒng)收到的任務應持久化,不應丟失
  • 可擴展性:系統(tǒng)應能每天調度和執(zhí)行越來越多的任務
  • 有限的等待時間:這是任務在開始執(zhí)行之前需要等待的時間。我們不能在預期時間之后執(zhí)行任務。用戶不應該無限期地等待。如果用戶的等待時間超過一定閾值,他們應該收到通知

3 組件設計

3.1 任務調度程序架構設計

系統(tǒng)設計面試指南之分布式任務調度

① Task Submitter(任務提交者)

接受任務。沒有單一的任務提交者。相反,我們有一組接收越來越多任務的節(jié)點。

② Database(數(shù)據庫)

任務提交者接收的所有任務都存儲在分布式數(shù)據庫。使用關系數(shù)據庫來存儲:

  • task IDs
  • user IDs
  • 所需資源
  • 執(zhí)行上限
  • 客戶端嘗試總次數(shù)
  • 延遲容忍度
  • ...

使用有向無環(huán)圖(DAG)存儲依賴任務的數(shù)據的圖數(shù)據結構的非關系數(shù)據庫。

③ Batching and prioritization(批處理和優(yōu)先級)

將任務存儲在 RDB 后,將任務分批。優(yōu)先級基于任務的屬性,如:

  • 延遲容忍度
  • 或執(zhí)行時間短的任務等。

將最高 K 優(yōu)先級的任務推送到分布式隊列,K限制可以推送到隊列的元素數(shù)量。K值取決許多因素,如:

  • 當前可用資源
  • 客戶端
  • 或任務優(yōu)先級
  • 訂閱級別

④ Queue manager(隊列管理器)

隊列管理器在隊列中添加、更新或刪除任務。它跟蹤我們使用的隊列的類型。它還負責保持任務在隊列中直到成功執(zhí)行。如果任務執(zhí)行失敗,該任務將再次出現(xiàn)在隊列。隊列管理器知道在高峰時段、非高峰時段應該運行什么隊列。

⑤ Resource manager(資源管理器)

知道哪些資源空閑。它從分布式隊列中拉取任務并分配給它們資源。資源管理器:

  • 跟蹤每個任務的執(zhí)行情況
  • 并將其狀態(tài)發(fā)送回隊列管理器

若任務超出其能力或所需的資源使用,則終止該任務,并將狀態(tài)發(fā)送回任務提交者,后者將通過錯誤消息通知客戶端有關任務終止的情況。

4 執(zhí)行上限

4.1 任務分類

  • 不能延遲的任務 - 緊急任務
  • 可延遲的任務
  • 需定期執(zhí)行的任務 - 周期性任務

基于任務類別的多個隊列:

系統(tǒng)設計面試指南之分布式任務調度

系統(tǒng)需確保非緊急隊列中的任務不會被餓死。一旦某些任務的延遲限制即將達到,它就會被移動到緊急任務隊列以獲得優(yōu)先服務。

4.2 優(yōu)先級

一些任務執(zhí)行時間很長并占用資源,阻塞其他任務。在調度任務時,執(zhí)行上限(execution cap)是個重要參數(shù)。

若我們完全分配資源給單個任務并等待該任務完成,則由于任務腳本錯誤,某些任務可能不會停止,無法完成執(zhí)行。我們允許用戶為其任務設置執(zhí)行上限。指定時間后停止任務執(zhí)行,釋放資源并分配給隊列中的下一任務。若由于執(zhí)行上限而停止任務執(zhí)行,系統(tǒng)會通知所屬用戶的這些實例。他們需針對這種情況采取人工兜底。

5 任務緊急執(zhí)行

有些任務需緊急執(zhí)行。如Facebook社交應用中,用戶可在緊急情況下標記自己是安全的,如地震。執(zhí)行此活動的任務應及時執(zhí)行,否則此功能對 Facebook 用戶毫無用處。向客戶發(fā)送電子郵件通知,告知其賬戶扣除一定金額的資金,是另一個需要緊急執(zhí)行的任務示例。

為優(yōu)先處理任務,任務調度程序為每個任務維護一個delay tolerance(延遲容忍度)參數(shù),并在接近其延遲容忍度時執(zhí)行該任務。

延遲容忍度是任務執(zhí)行可延遲的最大時間量。首先執(zhí)行延遲容忍時間最短的任務。通過使用延遲容忍參數(shù),可在高峰時段推遲延遲容忍值更長的任務,為緊急任務留出空間。

6 資源容量優(yōu)化

有時資源接近過載閾值(如超過 80% 利用率),這就是高峰期。同一資源在非高峰時段可能閑置。所以,須考慮如何在非高峰時段更好利用資源及如何在高峰時段保持資源可用。

有些任務無需緊急執(zhí)行。如Facebook社交應用,建議好友不是緊急任務??梢詾檫@樣的任務創(chuàng)建一個單獨的隊列,并在非高峰時段執(zhí)行它們。如果我們一直有比可用資源更多的工作要做,我們可能會遇到容量問題,就該配置更多資源。

7 任務冪等性

如果任務成功執(zhí)行,但由于某些原因機器無法發(fā)送確認,則調度程序將再次調度該任務。再次執(zhí)行該任務。

我們不希望再次執(zhí)行任務時最終結果發(fā)生更改。這在轉賬時對金融應用程序至關重要。我們要求任務是冪等的。冪等任務無論執(zhí)行多少次都會產生相同的結果。

此屬性是由開發(fā)人員在實現(xiàn)中添加的,通過某些內容(例如名稱)來標識該屬性并覆蓋舊的。

8 評估

8.1 可用性

任務提交是由多個節(jié)點完成的。若提交任務的節(jié)點失敗,其他節(jié)點將接替其位置。推送任務的隊列在本質上也是分布式,確??捎眯浴S捎诔掷m(xù)監(jiān)控是否需要添加或刪除資源,可盡力保證始終有可用資源。設計中的每個組件都是分布式的,使得整個系統(tǒng)可用性大大增強。

8.2 持久性

我們將任務存儲在持久化分布式數(shù)據庫中,并在接近執(zhí)行時間時將任務推送到隊列中。一旦提交任務,它就會在數(shù)據庫中直到執(zhí)行完成。

8.3 可擴展性

任務調度程序提供可擴展性,因為設計中任務提交者是分布式的??上蚣禾砑痈喙?jié)點以提交大規(guī)模數(shù)量的任務。

然后將這些任務保存到也是可擴展的分布式關系數(shù)據庫中。

再從 RDB 將任務推送到分布式隊列,它可隨任務數(shù)量增加而擴展??蔀椴煌愋偷娜蝿仗砑痈嚓犃?。還可根據資源與需求比添加更多資源。

8.4 容錯性

任務在首次發(fā)送執(zhí)行時不會從隊列中刪除。如果執(zhí)行失敗,將嘗試最大允許次數(shù)的重試。若任務包含死循環(huán),會在指定時間后終止任務并通知用戶。

參考:

  • 編程嚴選網

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!文章來源地址http://www.zghlxwxcb.cn/news/detail-747811.html

到了這里,關于系統(tǒng)設計面試指南之分布式任務調度的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 如何本地搭建開源分布式任務調度系統(tǒng)DolphinScheduler并遠程訪問

    如何本地搭建開源分布式任務調度系統(tǒng)DolphinScheduler并遠程訪問

    本篇教程和大家分享一下DolphinScheduler的安裝部署及如何實現(xiàn)公網遠程訪問,結合內網穿透工具實現(xiàn)公網訪問DolphinScheduler內網并進行遠程辦公,幫助開發(fā)人員進行遠程任務調度及管理,提高工作效率。 DolphinScheduler是一款開源的分布式任務調度系統(tǒng),它可以幫助開發(fā)人員更加方

    2024年02月05日
    瀏覽(23)
  • Spring Boot 3 整合 xxl-job 實現(xiàn)分布式定時任務調度,結合 Docker 容器化部署(圖文指南)

    Spring Boot 3 整合 xxl-job 實現(xiàn)分布式定時任務調度,結合 Docker 容器化部署(圖文指南)

    xxl-job 是一個分布式任務調度平臺,它提供了強大的任務調度和執(zhí)行能力,可以幫助我們實現(xiàn)任務的自動化調度和執(zhí)行。本文將介紹如何在 Docker 環(huán)境下部署 xxl-job,并將其與 Spring Boot 進行整合。 數(shù)據庫腳本:tables_xxl_job-2.4.0.sql Docker 鏡像地址: https://hub.docker.com/r/xuxueli/xxl-jo

    2024年02月06日
    瀏覽(36)
  • 分布式可視化 DAG 任務調度系統(tǒng) Taier 的整體流程分析

    分布式可視化 DAG 任務調度系統(tǒng) Taier 的整體流程分析

    Taier 作為袋鼠云的開源項目之一,是一個分布式可視化的 DAG 任務調度系統(tǒng)。旨在降低 ETL 開發(fā)成本,提高大數(shù)據平臺穩(wěn)定性,讓大數(shù)據開發(fā)人員可以在 Taier 直接進行業(yè)務邏輯的開發(fā),而不用關心任務錯綜復雜的依賴關系與底層的大數(shù)據平臺的架構實現(xiàn),將工作的重心更多地

    2024年02月12日
    瀏覽(26)
  • 基于docker的分布式任務調度系統(tǒng)xxl-job搭建

    基于docker的分布式任務調度系統(tǒng)xxl-job搭建

    本文所使用的操作系統(tǒng)為: CentOS-7-x86_64-DVD-2009 xxl-job 依賴 mysql,所以必須要安裝mysql才行! 訪問以下鏈接:https://hub.docker.com/_/mysql/ 尋找自己需要的MySQL版本拉取即可 1.下載鏡像 這里未指定版本號,默認拉取的是最新MySQL鏡像 2.導入zip包 下載xxljob項目,查看releases版本 https:

    2024年02月20日
    瀏覽(21)
  • 【xxl-job】分布式任務調度系統(tǒng)xxl-job搭建

    【xxl-job】分布式任務調度系統(tǒng)xxl-job搭建

    XXL-JOB是一個輕量級分布式任務調度平臺,其核心設計目標是開發(fā)迅速、學習簡單、輕量級、易擴展、開箱即用。 更多介紹,請訪問官網:分布式任務調度平臺XXL-JOB 前提條件:任務調度中心(xxl-job admin)依賴于 mysql,所以必須要安裝mysql才行!安裝mysql有2種方式:docker部署或

    2024年02月16日
    瀏覽(23)
  • 新起點!大數(shù)據分布式可視化的 DAG 任務調度系統(tǒng) Taier 正式發(fā)布1.4版本

    我們很高興向大家宣布,2023年4月14日,Taier 正式發(fā)布 1.4 版本。自2022年2月份 Taier 正式開源以來,收到了很多開發(fā)者和行業(yè)用戶的積極評價,在諸多生產環(huán)境中已得到充分應用。Taier 1.4版本正是吸收了各類實踐經驗及大家的建議,進行了此次迭代優(yōu)化。 本次更新不僅包含了性

    2023年04月20日
    瀏覽(19)
  • 分布式任務調度,定時任務的處理方案

    分布式任務調度,定時任務的處理方案

    適用場景: Spring 定時任務是 Spring 框架提供的一種輕量級的任務調度方案,它的特點是簡單易用、輕量級。Spring 定時任務的執(zhí)行是在 單個節(jié)點 上進行的,如果需要分布式任務調度,需要自己實現(xiàn)相應的解決方案。 1.導入依賴版本自己控制 2.啟動類加上@EnableScheduling 3.編寫業(yè)

    2023年04月14日
    瀏覽(46)
  • 分布式任務調度(00)--Quartz

    分布式任務調度(00)--Quartz

    調度器 :工廠類創(chuàng)建Scheduler,根據觸發(fā)器定義的時間規(guī)則調度任務 任務:Job表示被調度的任務 觸發(fā)器:Trigger 定義調度時間的元素,按啥時間規(guī)則執(zhí)行任務。一個Job可被多個Trigger關聯(lián),但是一個Trigger 只能關聯(lián)一個Job 執(zhí)行任務調度核心類QuartzSchedulerThread: 調度線程從JobSt

    2024年02月05日
    瀏覽(24)
  • 分布式之任務調度學習二

    分布式之任務調度學習二

    Spring-quartz 工程 Spring 在 spring-context-support.jar 中直接提供了對 Quartz 的支持 可以在配置文件中把 JobDetail、Trigger、Scheduler 定義成 Bean。 4.1 定義 Job 4.2 定義 Trigger 4.3 定義 Scheduler 既然可以在配置文件配置,當然也可以用@Bean 注解配置。在配置類上加上@Configuration 讓 Spring 讀取到

    2024年02月03日
    瀏覽(28)
  • 分布式定時任務調度框架Quartz

    分布式定時任務調度框架Quartz

    Quartz是一個定時任務調度框架,比如你遇到這樣的問題: 比如淘寶的待支付功能,后臺會在你生成訂單后24小時后,查看訂單是否支付,未支付則取消訂單 比如vip的每月自動續(xù)費功能 … 想定時在某個時間,去做某件事 Quartz是一套輕量級的任務調度框架,只需要定義了 Job(

    2024年02月04日
    瀏覽(37)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包