摘要:它是一個非常簡單的小框架或者稱為微框架也行,其目的很簡單快速地將老舊類轉(zhuǎn)變成為遠(yuǎn)程服務(wù),降低這類工作的難度和門檻。而采用插件的原因則在于分工明確。
這些天因為項目的需要基于Vert.x和PF4J做了一個簡單的插件式遠(yuǎn)程服務(wù)框架dfx。它是一個非常簡單的小框架(或者稱為微框架也行),其目的很簡單:快速地將老舊Java類轉(zhuǎn)變成為遠(yuǎn)程服務(wù),降低這類工作的難度和門檻。
簡單到什么程度呢?這么說吧:開發(fā)者只要實現(xiàn)一個指定的接口,然后將其打包成一個插件并復(fù)制到dfx指定的插件目錄之下就ok了(當(dāng)然,還需要修改對應(yīng)的配置文件)。
至于為何選定Vert.x為支撐技術(shù),原因在我之前的踩坑記中已經(jīng)解答。而采用插件的原因則在于:
分工明確。插件開發(fā)者只需專注于業(yè)務(wù)邏輯的開發(fā),不用去為底層各種機(jī)制(如斷路器,你沒看錯,dfx管理下的插件天然就具有斷路器功能,而插件開發(fā)者根本就沒有意識到這一點!即使無意間引入了一個慢插件,也不會殃及其他插件。)煩心。
管理的需要。除了功能的擴(kuò)展性,插件系統(tǒng)帶來的一個附加好處就是有效控制了整個系統(tǒng)的代碼。即,開發(fā)新功能時不需要將整個系統(tǒng)的代碼clone得到處都是。從代碼安全性上來講,這無疑是絕佳的選擇。同時,這還帶來了另一個好處:編譯速度的極大改善。要是經(jīng)歷過編譯3天才得到一個二機(jī)制文件,那你應(yīng)該明白我在說什么,;)。
對于插件系統(tǒng),我選擇的是PF4J,一個小巧的插件實現(xiàn)。
除了簡單和斷路器支持,dfx的還支持熱更新,只是目前的方式簡單粗暴:當(dāng)發(fā)現(xiàn)任意一個變化(conf和插件目錄中zip包的變化)時,會重新加載整個服務(wù),即相當(dāng)于重啟。
關(guān)于dfx的詳細(xì)使用和插件的開發(fā),可以從它的README得到更多細(xì)節(jié)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/67993.html
摘要:基本消息對象的設(shè)計消息對象的設(shè)計主要由兩部分組成特定數(shù)據(jù)幀對應(yīng)的特定消息對象。該類包含上節(jié)數(shù)據(jù)幀主幀及子幀的所有公共信息,僅僅未包含子幀中的數(shù)據(jù)體信息,該需求由基本消息對象的子類實現(xiàn)。 開發(fā)工程中,有一個常見的需求:服務(wù)端程序和多個客戶端程序通過 TCP 協(xié)議進(jìn)行通信,通信雙方需通信的消息種類眾多,并且客戶端的數(shù)量可能有數(shù)萬個。為此,雙方需要約定盡可能豐富、靈活的數(shù)據(jù)幀「數(shù)據(jù)包」協(xié)議,...
摘要:比特幣和以太幣屬于一類區(qū)塊鏈,我們將其歸類為公共無許可的區(qū)塊鏈技術(shù)。例如,在單個企業(yè)中部署時,或由受信任的權(quán)威機(jī)構(gòu)運(yùn)作,完全拜占庭容錯的共識可能被認(rèn)為是不必要的,并且對性能和吞吐量造成過度的拖累。 介紹 一般而言,區(qū)塊鏈?zhǔn)且粋€不可變的交易分類賬,維護(hù)在一個分布式對等節(jié)點網(wǎng)絡(luò)中。這些節(jié)點通過應(yīng)用已經(jīng)由共識協(xié)議驗證的交易來維護(hù)分類帳的副本,該交易被分組為包括將每個塊綁定到前一個塊的散列的塊...
摘要:而實際兩者之間的通信使用的是基于的自定義二進(jìn)制數(shù)據(jù)幀,對象與數(shù)據(jù)幀之間需進(jìn)行轉(zhuǎn)換。該類實現(xiàn)了編碼解碼方法,故可對消息對象進(jìn)行編碼或?qū)?shù)據(jù)幀進(jìn)行解碼。該類的靜態(tài)方法可通過指定功能消息對象生成相應(yīng)的回復(fù)對象。 本文為該系列的第二篇文章,設(shè)計需求為:服務(wù)端程序和眾多客戶端程序通過 TCP 協(xié)議進(jìn)行通信,通信雙方需通信的消息種類眾多。上一篇文章詳細(xì)描述了該通信協(xié)議的二進(jìn)制數(shù)據(jù)幀格式以及基本 J...
項目地址 showImg(https://segmentfault.com/img/remote/1460000019380071); 什么是 Puzzle Puzzle 是基于 Vue 和 Webpack4 實現(xiàn)的一種項目結(jié)構(gòu);業(yè)務(wù)模塊可以像拼圖一樣與架構(gòu)模塊組合,形成不同的系統(tǒng),而這一切都是可以在生產(chǎn)環(huán)境熱插拔的;這意味著你可以隨時向你的系統(tǒng)添加新的功能模塊,甚至改版整個系統(tǒng),而不需要全量替換...
注解 注解(一種元數(shù)據(jù)形式)提供有關(guān)不屬于程序本身的程序的數(shù)據(jù),注解對它們注解的代碼的操作沒有直接影響。 注解有許多用途,其中包括: 編譯器的信息 — 編譯器可以使用注解來檢測錯誤或抑制警告。 編譯時和部署時處理 — 軟件工具可以處理注解信息以生成代碼、XML文件等。 運(yùn)行時處理 — 可以在運(yùn)行時檢查某些注解。 本課程介紹了可以使用注解的位置,以及如何應(yīng)用注解,Java平臺標(biāo)準(zhǔn)版(Java S...
閱讀 1996·2021-11-11 16:55
閱讀 2215·2021-10-08 10:13
閱讀 806·2019-08-30 11:01
閱讀 2227·2019-08-29 13:19
閱讀 3346·2019-08-28 18:18
閱讀 2680·2019-08-26 13:26
閱讀 637·2019-08-26 11:40
閱讀 1946·2019-08-23 17:17