當前位置:
首頁 > 最新 > 分散式任務框架

分散式任務框架

首先說這個框架的目前的應用場景:

例如:美團想要獲取七天酒店的信息,而且這個請求量特別大,但是卻不要求是及時響應,可以非同步完成。根據這個需求我們大致可以確定採用什麼技術方案,可以採用隊列來完成這個過程,但是如果僅僅是隊列來實現的話,又有些問題。

比如我想實現以下這些功能:

1.如果這個請求我想寫入日誌

2.我想根據請求類型做不同的異常拋出

3.我想在這個過程中實現RPC調用請求一些特定的介面數據

4.我想實現同一套程序多個實例運行定時任務和隊列任務等

基於這種應用場景,我們將上面幾種功能整合到一個包,這個包在這裡就叫做分散式任務框架。

分散式任務框架具體功能如下:

1. 基於spring boot實現,依賴rabbitMQ,mysql,redis,influxdb。

2. 完全分散式,支持混合雲,可指定主機或指定集群運行。

3. 支持定時任務,並支持服務端動態配置。

4. 支持基於隊列分發任務,支持錯誤重試,並支持服務端動態配置。

5. 支持RPC風格調用,支持錯誤重試,並支持伺服器端動態配置。

5. 支持多種規則的任務報警。

6. 支持同一套程序多個實例運行定時任務和隊列任務。

分散式任務框架實現原理:

1.採用java監聽者模式監聽隊列是否執行,如果執行則觸發日誌

2.採用Spring自帶的Scheduled、TaskScheduler實現多線程定時任務

3.基於redis實現的分散式序列的生成

4.定義自己的異常類,來實現不同調度任務,返回不同的異常信息

5.基於SpringBoot集成MQ、Redis、Guava

6.採用AtomicBoolean、ConcurrentHashMap實現多線程安全

7.隊列的請求和返回參數採用泛型實現,以適配各種各樣的數據源

8.使用RateLimiter進行隊列限流

有興趣想要進一步研究的話,可以下載下面的源代碼。

GitHub地址:https://github.com/1913045515/task/tree/master/task


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

約翰·克利斯朵夫奮鬥的一生
曾經的麥迪接班人,後仰跳投美如畫

TAG:全球大搜羅 |