阿里開源框架-JarsLink-【JAVA的模塊化開發(fā)框架】

JarsLink (原名Titan) 是一個基于JAVA的模塊化開發(fā)框架,它提供在運行時動態(tài)加載模塊(一個JAR包)、卸載模塊和模塊間調(diào)用的API。

需求背景?

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

故障不隔離。當(dāng)一個系統(tǒng)由多人同時參與開發(fā)時,修改A功能,可能會影響B(tài)功能,引發(fā)故障。?

多分支開發(fā)引發(fā)沖突。多分支開發(fā)完之后合并會產(chǎn)生沖突。?

牽一發(fā)動全身。一處核心代碼的改動,或一個基礎(chǔ)Jar的升級需要回歸整個系統(tǒng)。?

升級和遷移成本高。中間件升級每個應(yīng)用都有升級成本。?

模塊化開發(fā)的好處


可插拔,一個應(yīng)用由多個模塊組成,應(yīng)用里的模塊可拆和合,模塊可快速在多個系統(tǒng)中遷移和部署。?

模塊化開發(fā),模塊之間互相隔離,實現(xiàn)故障隔離。?

一個模塊一個分支,不會引發(fā)代碼沖突。?

在模塊中增加或修改功能,只會影響當(dāng)前模塊,不會影響整個應(yīng)用。?

動態(tài)部署,在運行時把模塊部署到應(yīng)用中,快速修復(fù)故障,提高發(fā)布效率。?

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

減少資源消耗,通過部署模塊的方式減少應(yīng)用數(shù)量和機器數(shù)量。?

JarsLink的應(yīng)用場景?

微服務(wù)集成測試, 目前一個微服務(wù)是一個FAT JAR,如果有幾十個微服務(wù),則需要啟動很多進程,DEBUG端口會很多,使用JarsLink框架合并FAT JAR,再路由請求到其他JAR,就可以只啟動一個進程進行DEBUG測試。?

數(shù)據(jù)管理中心,數(shù)據(jù)采集的數(shù)據(jù)源多,而且每種數(shù)據(jù)源都需要對接和開發(fā),通過模塊化開發(fā),實現(xiàn)一個數(shù)據(jù)源使用一個模塊進行對接。?

指標(biāo)計算系統(tǒng),每個TOPIC一個模塊,把消息轉(zhuǎn)發(fā)到模塊中進行消息處理。?

后臺管理系統(tǒng),幾乎每個系統(tǒng)都有后臺開發(fā)的需求,新建應(yīng)用則應(yīng)用數(shù)多,維護成本高,引入模塊化開發(fā),一個二級域一個模塊來開發(fā)后臺功能。?

目前螞蟻金服微貸事業(yè)部幾個系統(tǒng)和幾十個模塊已經(jīng)使用JarsLink框架。

JarsLink的特性?

隔離性?

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

實例隔離:框架為每個模塊創(chuàng)建了一個獨立的Spring上下文,來加載模塊中的BEAN,實例化失敗不會影響其他模塊。?

資源隔離:后續(xù)會支持模塊之間的資源隔離,每個模塊使用獨立的CPU和內(nèi)存資源。?

動態(tài)性?

動態(tài)發(fā)布:模塊能在運行時動態(tài)加載到系統(tǒng)中,實現(xiàn)不需要重啟和發(fā)布系統(tǒng)新增功能。支持突破雙親委派機制,在運行時加載父加載器已經(jīng)加載過的類,實現(xiàn)模塊升級依賴包不需要系統(tǒng)發(fā)布。?

動態(tài)卸載:模塊能在運行時被動態(tài)卸載干凈,實現(xiàn)快速下線不需要功能。?

易用性?

提供了通用靈活的API讓系統(tǒng)和模塊進行交互。

文檔

如何使用

實現(xiàn)原理

應(yīng)用場景

高級特性

github:https://github.com/alibaba/jarslink

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,291評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評論 19 139
  • 是誰拿走了雞鳴狗吠,蛙語稻花香 是誰拿走了裊裊炊煙,那一片金色麥浪 是誰拿走了孩子們的歡歌笑語,田間啍唱的農(nóng)諺小調(diào)...
    指尖蝶舞的花園閱讀 455評論 2 13
  • 很多朋友都很羨慕我的“間隔年之旅”,所以我決定把那次旅行寫出來! 2016年7月份我辭職了,那年我25歲,工作也正...
    無飯不起早閱讀 1,441評論 13 29

友情鏈接更多精彩內(nèi)容