您好,登錄后才能下訂單哦!
分享一下最近項(xiàng)目中用到的多線程模型。
需要實(shí)現(xiàn):根據(jù)租戶填寫的表單,自動部署ES集群,提供ES服務(wù)。
基本思路:
就是將一個事務(wù)生命周期分成不同的階段,每個階段都是用線程去負(fù)責(zé)執(zhí)行。
目前主要分為四個階段:事件監(jiān)聽階段,事件提交階段,執(zhí)行器階段,狀態(tài)校驗(yàn)階段
流程圖如下:
線程分類:
A、監(jiān)聽線程
B、工作線程
C、狀態(tài)校驗(yàn)線程
D、執(zhí)行器線程
原理圖簡單介紹:
1、AcceptorThread線程:監(jiān)聽操作對列表,將新產(chǎn)生的事件記錄扔進(jìn)事件分類器,并且同時往內(nèi)存容器中添加一條記錄。
2、事件分類器:根據(jù)事件的類型,創(chuàng)建不同的工作線程
3、工作線程:工作線程是具體干活的,如負(fù)責(zé)調(diào)用marathon的create接口,刪除接口,停止接口等
4、執(zhí)行器:
A、不斷的監(jiān)聽執(zhí)行容器,有任務(wù)的話,就去執(zhí)行,如停止節(jié)點(diǎn),啟動節(jié)點(diǎn),恢復(fù)節(jié)點(diǎn)等操作。
B、更新節(jié)點(diǎn)表的狀態(tài),以及 內(nèi)存緩存容器中節(jié)點(diǎn)的狀態(tài)
5、OptStateThread:監(jiān)聽內(nèi)存緩存容器OptMap,如果有新的事件發(fā)生,根據(jù)類型產(chǎn)生不同的校驗(yàn)線程;
6、校驗(yàn)線程:具體負(fù)責(zé)校驗(yàn)的;根據(jù)校驗(yàn)的結(jié)果來更新集群的狀態(tài)
總結(jié):
A、體現(xiàn)了生產(chǎn)者,消費(fèi)者思想
B、對事件進(jìn)行了分割,各自線程只負(fù)責(zé)自己單獨(dú)的部分。
C、對事務(wù)的生命周期,要學(xué)會進(jìn)行合理的拆分
D、要橫向思維,分階段,分模塊劃分
代碼不是很重要,主要是理解這種設(shè)計模式,設(shè)計思路;
其實(shí),可以從Netty的多線程模型中吸取知識,從而應(yīng)用到以后的項(xiàng)目中。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。