基於 Java 的模組化開發架構 JarsLink

來源:互聯網
上載者:User
JarsLink 詳細介紹

JarsLink (原名 Titan ) 是一個基於 Java 的模組化開發架構,它提供在運行時動態載入模組(一個 Jar 包)、卸載模組和模組間調用的 API。 需求背景

應用拆分的多或少都有問題。多則維護成本高,每次發布一堆應用。少則拆分成本高,無用功能很難下線。

故障不隔離。當一個系統由多人同時參與開發時,修改A功能,可能會影響B功能,引發故障。

多分支開發引發衝突。多分支開發完之後合并會產生衝突。

牽一髮動全身。一處核心代碼的改動,或一個基礎Jar的升級需要迴歸整個系統。

升級和遷移成本高。中介軟體升級每個應用都有升級成本。 模組化開發的好處

可插拔,一個應用由多個模組組成,應用裡的模組可拆和合,模組可快速在多個系統中遷移和部署。

模組化開發,模組之間互相隔離,實現故障隔離。

一個模組一個分支,不會引發代碼衝突。

在模組中增加或修改功能,只會影響當前模組,不會影響整個應用。

動態部署,在運行時把模組部署到應用中,快速修複故障,提高發布效率。

多版本部署,可以在運行時同時部署某個模組的新舊版本,進行AB TEST。

減少資源消耗,通過部署模組的方式減少應用數量和機器數量。 JarsLink的應用情境

微服務整合測試, 目前一個微服務是一個FAT JAR,如果有幾十個微服務,則需要啟動很多進程,DEBUG連接埠會很多,使用JarsLink架構合并FAT JAR,再路由請求到其他JAR,就可以只啟動一個進程進行DEBUG測試。

資料管理中心,資料擷取的資料來源多,而且每種資料來源都需要對接和開發,通過模組化開發,實現一個資料來源使用一個模組進行對接。

指標計算系統,每個TOPIC一個模組,把訊息轉寄到模組中進行訊息處理。

後台管理系統,幾乎每個系統都有後台開發的需求,建立應用則應用數多,維護成本高,引入模組化開發,一個二級域一個模組來開發後台功能。

目前螞蟻金服微貸事業部幾個系統和幾十個模組已經使用JarsLink架構。 JarsLink的特性

隔離性

類隔離:架構為每個模組的Class使用單獨的ClassLoader來載入,每個模組可以依賴同一種架構的不同的版本。

執行個體隔離:架構為每個模組建立了一個獨立的Spring上下文,來載入模組中的BEAN,執行個體化失敗不會影響其他模組。

資源隔離:後續會支援模組之間的資源隔離,每個模組使用獨立的CPU和記憶體資源。

動態性

動態發布:模組能在運行時動態載入到系統中,實現不需要重啟和發布系統新增功能。支援突破雙親委派機制,在運行時載入父載入器已經載入過的類,實現模組升級依賴包不需要系統發布。

動態卸載:模組能在運行時被動態卸載乾淨,實現快速下線不需要功能。

易用性

提供了通用靈活的API讓系統和模組進行互動。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.