摘要:已預留擴展,可以實現自己的模塊你想好了嗎你是否真的需要這樣的一個工具,到底是異步還是同步,什么樣的才可以稱的上任務。異步分布執行雖然可以提高系統吞吐量,但它是在高于一定得計算量請求量的情況下才可以顯現出來這一特點。
Task系統設計與使用
Task是一個輕量級的分布式任務計算系統,他可以幫助你快速編寫一個可以在集群環境下運行的分布式方法,而這只需要你使用一行代碼就可以在你原有的方法上做到.
一個簡單例子:
public class Hello { public void say(String msg) throws InterruptedException { Thread.sleep(1000); System.out.println(msg); } } public class SetUp { public static void main(String[] args) throws InterruptedException { // 獲取Hello對象的代理實例 Hello hello = Task.registerASyncClass(Hello.class); // 此時say方法會被立即返回且是被集群中的某個節點給調用了 hello.say("hello world"); } }Task支持業務場景
Task的設計的目的是支持分布式任務計算,可以作為一款任務執行引擎.支持一下特點:
支持任務的開始暫停刪除
采用多種調度算法,可以指定任務在特定節點消費在不同的Executor上執行
擴展性強,可以對接各種mq服務executor模塊支持Spring的BeanFactory或者第三方DI容器
支持分布式任務執行,整個調用過程可以讓開發者無感知
攜帶監控系統,可以隨時了解系統運行的狀態
Task系統架構Task主要分為以下幾個模塊:
ClientProxy: 用于獲取任務提交的代理對象,如上Task.registerASyncClass(Hello.class)可以獲取Hello對象的代理實例,用于提交任務到mq服務。
Coding: 可以對方法的調用動作進行描述和重放方法的執行,并可以對描述信息進行序列化存取到mq服務和反序列化成一個Runnable對象
MQ: 用于存放方法調用信息描述的地方,默認支持Redis的List結構隊列,并預留擴展用于對接各個MQ組件
Controller: 任務調度的控制中心,負責任務調度路由,任務的開始、暫停等動作
Diapatch: Task采用的是拉取的方式進行任務調用。Dispatch模塊設計的目的主要是合適的時間去從MQ中拉取任務并監管任務的執行情況,異常處理
BeanFactory: 任務所屬對象的Bean管理,默認采用google的guice管理,已預留擴展,可以方便支持其它DI容器,可以方便擴展Spring的BeanFactory
Executor: 任務真正執行的地方,Dispatch模塊會把拉取到任務通過Coding轉成Runnable對象,并交給Executor模塊,Executor模塊類似于本地的ExecutorService框架,用于本地的并發模型。已預留擴展,可以實現自己的Executor模塊
你想好了嗎你是否真的需要這樣的一個工具,到底是異步還是同步,什么樣的才可以稱的上任務。在使用前,希望你也可以考慮清楚這些問題。這里我需要聲明的是,
能同步的最好不要異步。異步分布執行雖然可以提高系統吞吐量,但它是在高于一定得計算量請求量的情況下才可以顯現出來這一特點。當你決定需要它時,
你就要決定放棄及時響應的特性,雖然它可以達到近實時的計算(在無壓力下,一個任務默認可能會出現延遲1s執行,這個時間可以設置)。另外,你是否需要的是一個分布式的異步并行框架,
還是JDK自帶的單機并發框架,如果executorservice就可以滿足了,那你也不必使用它了,雖然我個人覺得這個在使用時會更方便,但我并不想讓你那么做,能滿足需求就好,
方案永遠不止一個,用你最熟悉的吧。
項目地址:https://github.com/WangJunTYTL/task
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66201.html
摘要:是在端的,是提前的,需要自己設置。如果在開源大數據框架上部署大快的開發框架,需要平臺的組件支持如下數據源與引擎數據采集數據處理模塊機器學習和模塊上傳服務器端包,直接支持搜索引擎模塊不獨立發布 hadoop是一個開源軟件框架,可安裝在一個商用機器集群中,使機器可彼此通信并協同工作,以高度分布式的方式共同存儲和處理大量數據。最初,Hadoop 包含以下兩個主要組件:Hadoop Distr...
摘要:擴展庫還包括用于復雜事件處理,機器學習,圖形處理和兼容性的專用代碼庫。事件時間機制使得那些事件無序到達甚至延遲到達的數據流能夠計算出精確的結果。負責接受用戶的程序代碼,然后創建數據流,將數據流提交給以便進一步執行。 showImg(https://segmentfault.com/img/remote/1460000016902812); 前言 Flink 是一種流式計算框架,為什么我...
摘要:隨著我們對于效率的追求不斷提高,基于單線程來實現并發又成為一個新的課題,即只用一個主線程很明顯可利用的只有一個情況下實現并發。作為的補充可以檢測操作,在遇到操作的情況下才發生切換協程介紹協程是單線程下的并發,又稱微線程,纖程。 引子 之前我們學習了線程、進程的概念,了解了在操作系統中進程是資源分配的最小單位,線程是CPU調度的最小單位。按道理來說我們已經算是把cpu的利用率提高很多了。...
閱讀 2683·2021-09-26 10:19
閱讀 2136·2021-09-24 10:27
閱讀 2520·2021-09-01 10:42
閱讀 2302·2019-08-29 16:09
閱讀 2485·2019-08-29 15:17
閱讀 1447·2019-08-29 15:09
閱讀 633·2019-08-29 11:14
閱讀 2301·2019-08-26 13:25