• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺談分布式任務(wù)注冊(cè)及調(diào)度的實(shí)現(xiàn)方法

      2021-04-03 12:12:29俞珍秒汪明貴
      中國(guó)設(shè)備工程 2021年8期
      關(guān)鍵詞:池中任務(wù)調(diào)度線程

      俞珍秒,汪明貴

      (南京南瑞信息通信科技有限公司,江蘇 南京 210003)

      隨著現(xiàn)代信息技術(shù)的高速發(fā)展,企業(yè)的信息系統(tǒng)也充斥著大量的數(shù)據(jù)。為了合理地管理并利用這些數(shù)據(jù),企業(yè)不得不對(duì)業(yè)務(wù)核心系統(tǒng)進(jìn)行擴(kuò)展,延伸出眾多業(yè)務(wù)子系統(tǒng)。而這些子系統(tǒng)為了滿足業(yè)務(wù)需求,又不得不嚴(yán)重依賴(lài)系統(tǒng)的核心數(shù)據(jù)。為了能有效地降低數(shù)據(jù)間的耦合,保證系統(tǒng)數(shù)據(jù)的一致性,業(yè)務(wù)系統(tǒng)通常會(huì)采用分布式任務(wù)調(diào)度系統(tǒng)來(lái)通知子系統(tǒng)的計(jì)算組件及時(shí)處理。但是核心數(shù)據(jù)的往往具有高頻變化特性,這給任務(wù)調(diào)度系統(tǒng)和業(yè)務(wù)子系統(tǒng)的穩(wěn)定運(yùn)行都提出了挑戰(zhàn)。

      本文提供了一種基于異步式編程的分布式任務(wù)注冊(cè)及調(diào)度的實(shí)現(xiàn)方法,命名為CaesiumServer。CaesiumServer 通過(guò)異步式編程將任務(wù)注冊(cè)隊(duì)列中的任務(wù)分發(fā)至不同的處理單元,提高了任務(wù)注冊(cè)模塊的高效性。通過(guò)任務(wù)合并,避免了不必要的任務(wù)調(diào)度,保證了任務(wù)執(zhí)行方的穩(wěn)定運(yùn)行。最后,多種任務(wù)執(zhí)行策略能夠合理規(guī)劃資源,滿足不同場(chǎng)景下的任務(wù)調(diào)度需求。

      1 總體設(shè)計(jì)

      在CaesiumServer 的設(shè)計(jì)中,任務(wù)接收模塊接收到注冊(cè)任務(wù)后,將任務(wù)信息中相同的任務(wù)進(jìn)行合并后更新至任務(wù)池,以此保證相同的任務(wù)不會(huì)被多次重復(fù)觸發(fā)。此外,任務(wù)執(zhí)行模塊在獲取任務(wù)池任務(wù)后,會(huì)根據(jù)任務(wù)性質(zhì)直接啟動(dòng)任務(wù)執(zhí)行程序或發(fā)布任務(wù)執(zhí)行信息。最后,任務(wù)執(zhí)行方的執(zhí)行控制器會(huì)根據(jù)任務(wù)注冊(cè)時(shí)指定的策略啟動(dòng)任務(wù)執(zhí)行程序。

      2 任務(wù)注冊(cè)信息

      在CaesiumServer 設(shè)計(jì)中調(diào)度引擎的任務(wù)接收模塊處理任務(wù)注冊(cè)信息。任務(wù)注冊(cè)方根據(jù)業(yè)務(wù)的需求將任務(wù)信息按照指定的格式發(fā)送到任務(wù)注冊(cè)隊(duì)列中,其中的任務(wù)信息主要包括:任務(wù)執(zhí)行體ID、執(zhí)行類(lèi)、計(jì)劃開(kāi)始執(zhí)行時(shí)間、任務(wù)類(lèi)型、任務(wù)觸發(fā)URL、是否可忽略、執(zhí)行策略、執(zhí)行計(jì)劃(Cron 表達(dá)式描述)、任務(wù)執(zhí)行上下文等信息。

      任務(wù)的接收模塊主要是通過(guò)異步式編程框架akka 來(lái)實(shí)現(xiàn)。akka 框架對(duì)構(gòu)建高并發(fā)、高容錯(cuò)性的分布式應(yīng)用具有良好的支持。其中的akkaactor 模型是一種將行為定義到actor,actor 間通過(guò)消息通信,消息發(fā)送異步進(jìn)行,消息處理(在actor 內(nèi))同步有序進(jìn)行的一種高并發(fā)、非阻塞式編程模型。在CaesiumServer 設(shè)計(jì)中任務(wù)接收模塊主要定義了三種Actor,分別為:任務(wù)合并單元、更新處理單元、常規(guī)

      處理單元。任務(wù)接收模塊從任務(wù)注冊(cè)隊(duì)列獲取任務(wù)信息后,會(huì)根據(jù)任務(wù)類(lèi)型分別將任務(wù)信息分發(fā)至不同的Actor 進(jìn)行處理。當(dāng)任務(wù)類(lèi)型為“可合并”型任務(wù)時(shí),模塊會(huì)根據(jù)指定時(shí)間段內(nèi)的相同內(nèi)容合并成一條任務(wù)后,發(fā)送至待執(zhí)行任務(wù)池。當(dāng)任務(wù)類(lèi)型為“更新”型任務(wù)時(shí),會(huì)判斷當(dāng)前待執(zhí)行任務(wù)池中是否存在未被執(zhí)行的相同任務(wù),如果存在會(huì)將本次任務(wù)中的包含的信息更新至待執(zhí)行任務(wù)池;如果不存在則將本次任務(wù)發(fā)送至待執(zhí)行任務(wù)池。當(dāng)任務(wù)類(lèi)型為“常規(guī)”型任務(wù)時(shí),則將本次任務(wù)直接發(fā)送至待執(zhí)行任務(wù)池。

      處理任務(wù)注冊(cè)信息中如何快速、高效的處理注冊(cè)任務(wù)是其難點(diǎn),因?yàn)閼?yīng)用注冊(cè)方會(huì)同時(shí)注冊(cè)大批量的任務(wù)。此時(shí)通過(guò)akka 的事件驅(qū)動(dòng)機(jī)制及時(shí)觸發(fā)相應(yīng)的邏輯尤為重要。

      3 發(fā)布/執(zhí)行任務(wù)

      CaesiumServer的任務(wù)執(zhí)行模塊以定期檢查的方式,根據(jù)待執(zhí)行任務(wù)池中的任務(wù)信息判斷當(dāng)前任務(wù)是否需要被執(zhí)行。當(dāng)任務(wù)需要被執(zhí)行時(shí),首先會(huì)查看該任務(wù)信息中任務(wù)觸發(fā)URL 是否有設(shè)定值。如果有設(shè)定值,會(huì)通過(guò)異步調(diào)用該觸發(fā)URL 來(lái)啟動(dòng)任務(wù)執(zhí)行體;如果未設(shè)定任務(wù)觸發(fā)URL,就會(huì)將任務(wù)信息發(fā)送至任務(wù)執(zhí)行隊(duì)列。在任務(wù)觸發(fā)完成后,會(huì)根據(jù)任務(wù)的執(zhí)行計(jì)劃更新或刪除任務(wù)池中的任務(wù)。

      4 啟動(dòng)任務(wù)

      任務(wù)執(zhí)行方從任務(wù)執(zhí)行隊(duì)列中獲取“任務(wù)執(zhí)行體ID”與自身一致的待執(zhí)行任務(wù)信息后,將任務(wù)交由任務(wù)執(zhí)行控制器進(jìn)行處理。任務(wù)執(zhí)行控制器主要包含一個(gè)分發(fā)線程、一個(gè)執(zhí)行線程池。分發(fā)線程主要按照任務(wù)的“執(zhí)行策略”控制任務(wù)執(zhí)行類(lèi)以不同的方式執(zhí)行?!皥?zhí)行策略”主要包括“隊(duì)列”、“并行”、“取消當(dāng)前”、“忽略當(dāng)前”、“延遲”等方式。執(zhí)行線程池主要用來(lái)執(zhí)行各任務(wù)。

      當(dāng)任務(wù)的執(zhí)行策略為“隊(duì)列”方式時(shí):分發(fā)線程會(huì)將任務(wù)按照“執(zhí)行類(lèi)”為單位,為該執(zhí)行類(lèi)創(chuàng)建一個(gè)執(zhí)行隊(duì)列,依次將任務(wù)發(fā)送至執(zhí)行線程池中執(zhí)行,直到將執(zhí)行隊(duì)列中的任務(wù)全部執(zhí)行完成。

      當(dāng)任務(wù)的執(zhí)行策略為“并行”方式時(shí):分發(fā)線程會(huì)直接將該任務(wù)發(fā)送至執(zhí)行線程池中執(zhí)行。

      當(dāng)任務(wù)的執(zhí)行策略為“取消當(dāng)前”方式時(shí):分發(fā)線程會(huì)判斷任務(wù)執(zhí)行線程池中是否存在與本任務(wù)相同的“執(zhí)行類(lèi)”在運(yùn)行,如果存在則調(diào)用當(dāng)前任務(wù)的取消邏輯,待取消成功后將本次任務(wù)發(fā)送至執(zhí)行線程池中執(zhí)行。如果不存在,直接將該任務(wù)發(fā)送至執(zhí)行線程池中執(zhí)行。

      當(dāng)任務(wù)的執(zhí)行策略為“忽略當(dāng)前”方式時(shí):分發(fā)線程會(huì)判斷任務(wù)執(zhí)行線程池中是否存在與本任務(wù)相同的“執(zhí)行類(lèi)”在運(yùn)行,如果存在則舍棄當(dāng)前的任務(wù),不對(duì)本次任務(wù)做任何處理。如果不存在,直接將該任務(wù)發(fā)送至執(zhí)行線程池中執(zhí)行。

      當(dāng)任務(wù)的執(zhí)行策略為“延遲”方式時(shí):分發(fā)線程會(huì)按照“執(zhí)行類(lèi)”為單位記錄前次任務(wù)執(zhí)行時(shí)間,如果當(dāng)前時(shí)間超過(guò)延遲時(shí)間時(shí),將本次任務(wù)發(fā)送至執(zhí)行線程池中執(zhí)行;如果尚未達(dá)到延遲時(shí)間會(huì)創(chuàng)建一個(gè)定時(shí)器,在時(shí)間到達(dá)時(shí)將任務(wù)發(fā)送至執(zhí)行線程池中執(zhí)行。

      不同執(zhí)行策略的處理方式各異,實(shí)現(xiàn)難度也各異。其中“取消當(dāng)前”型任務(wù)處理難度較大。因?yàn)樗械娜蝿?wù)都是在任務(wù)執(zhí)行線程池中運(yùn)行,如何獲取當(dāng)前任務(wù)的引用以及如何判斷任務(wù)取消成功也是一個(gè)處理難點(diǎn)。實(shí)施時(shí)可通過(guò)包裝類(lèi)對(duì)方式對(duì)“取消當(dāng)前”型任務(wù)進(jìn)行封裝,包裝類(lèi)可設(shè)計(jì)成包含當(dāng)前任務(wù)、前次任務(wù)等信息。包裝類(lèi)的執(zhí)行方法中首先需要調(diào)用前次任務(wù)的取消方法,直到取消成功后再調(diào)用當(dāng)前任務(wù)的執(zhí)行方法。

      5 結(jié)語(yǔ)

      CaesiumServer 可保證任務(wù)調(diào)度引擎的高效性、穩(wěn)定性、容錯(cuò)性,改變了以往任務(wù)調(diào)度引擎的過(guò)載帶來(lái)的任務(wù)觸發(fā)不及時(shí)、丟失等狀況。能夠顯著加強(qiáng)任務(wù)執(zhí)行方的處理效率,特別是根據(jù)任務(wù)特征選擇不同的執(zhí)行策略能夠合理的優(yōu)化服務(wù)器資源,改變了以往任務(wù)執(zhí)行方大量任務(wù)同時(shí)執(zhí)行帶來(lái)的服務(wù)器壓力,甚至崩潰的風(fēng)險(xiǎn)。

      猜你喜歡
      池中任務(wù)調(diào)度線程
      選煤廠事故池中污染物在地下水中的遷移規(guī)律研究
      池中景象
      小讀者(2019年20期)2020-01-04 02:13:56
      基于改進(jìn)NSGA-Ⅱ算法的協(xié)同制造任務(wù)調(diào)度研究
      基于時(shí)間負(fù)載均衡蟻群算法的云任務(wù)調(diào)度優(yōu)化
      淺談linux多線程協(xié)作
      云計(jì)算環(huán)境中任務(wù)調(diào)度策略
      云計(jì)算中基于進(jìn)化算法的任務(wù)調(diào)度策略
      詩(shī)劇
      Linux線程實(shí)現(xiàn)技術(shù)研究
      么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
      万源市| 新民市| 自贡市| 阿图什市| 枣庄市| 湖南省| 时尚| 额尔古纳市| 大埔县| 琼结县| 湄潭县| 扬州市| 永宁县| 二连浩特市| 自贡市| 靖西县| 仁布县| 兴和县| 镇雄县| 中西区| 亳州市| 罗田县| 边坝县| 那曲县| 临城县| 景洪市| 灌阳县| 壤塘县| 大同县| 磐安县| 临泽县| 巴彦淖尔市| 五河县| 溆浦县| 台州市| 龙岩市| 全椒县| 宿松县| 历史| 汾西县| 富民县|