1.一種基于非阻塞通信的微服務系統(tǒng)設計方法,其特征在于,包括步驟:
(1)構建三層網(wǎng)絡架構的服務端:包括由下至上的反應通信調(diào)度層、職責鏈管道層和業(yè)務邏輯處理層,其中
-所述反應通信調(diào)度層監(jiān)聽網(wǎng)絡的讀寫和連接操作,負責將網(wǎng)絡層的數(shù)據(jù)讀取到內(nèi)存緩沖區(qū)中,然后觸發(fā)各種網(wǎng)絡事件,將這些事件觸發(fā)到管道中,由管道充當?shù)穆氊熸渷磉M行后續(xù)的處理;
-所述職責鏈管道層負責事件在職責鏈中的有序傳播,同時負責動態(tài)的編排職責鏈,職責鏈選擇監(jiān)聽和處理自己關心的事件、攔截處理和向后/向前傳播事件;
-所述業(yè)務邏輯處理層負責業(yè)務邏輯處理與應用層協(xié)議管理;
(2)客戶端通過API透明地與所述服務端發(fā)送和接收信息。
2.根據(jù)權利要求1所述的基于非阻塞通信的微服務系統(tǒng)設計方法,其特征在于:所述服務端的實現(xiàn)步驟為:
A、創(chuàng)建一個服務的實例,所述服務為服務入口,通過消息循環(huán)等待客戶端的信息;
B、綁定一個事件循環(huán)的線程池,通過一事件循環(huán)的數(shù)值來實現(xiàn),用于處理選擇器Selector產(chǎn)生的事件通道通道,由事件來實現(xiàn)對選擇器的輪詢,每個事件處理網(wǎng)絡的消息和系統(tǒng)自定義的任務;
C、設置并綁定服務端的IO通道非阻塞服務端口通道,通過通道的類型決定提供服務的模式;
D、注冊和創(chuàng)建通信鏈路,用于處理網(wǎng)絡事件,負責管理和執(zhí)行通道處理模塊,網(wǎng)絡事件以事件流的形式在通道管線中流轉(zhuǎn),由通道管線根據(jù)通道處理模塊的執(zhí)行策略調(diào)度通道處理模塊的執(zhí)行。
3.根據(jù)權利要求2所述的基于非阻塞通信的微服務系統(tǒng)設計方法,其特征在于:所述網(wǎng)絡事件的處理方法為:
a、建立系統(tǒng)編解碼框架;
b、建立通用的基于長度的半包解碼器;
c、打印碼流日志;
d、對SSL進行安全認證;
e、進行鏈路空閑檢測;
f、流量整形;
g、采用Base64編解碼;
h、系統(tǒng)初始化并檢測工作,然后綁定并啟動監(jiān)聽端口,并將IO通道注冊到選擇器上監(jiān)聽客戶端連接;
i、選擇器輪詢:由調(diào)度系統(tǒng)負責調(diào)度和執(zhí)行選擇器輪詢操作,選擇準備就緒的通道集合;
j、當輪詢到準備就緒的通道之后由消息事件執(zhí)行通道鏈路的相應方法,最終調(diào)度并執(zhí)行通道處理方法;
k、執(zhí)行用戶自定義的通道處理方法,完成整個服務端的任務。
4.根據(jù)權利要求3所述的基于非阻塞通信的微服務系統(tǒng)設計方法,其特征在于:所述編解碼框架為Thrift的壓縮二進制編解碼框架或Google的Protobuf二進制序列化框架或基于系統(tǒng)自身提供的編解碼框架。
5.根據(jù)權利要求3所述的基于非阻塞通信的微服務系統(tǒng)設計方法,其特征在于:所述網(wǎng)絡事件包括鏈路注冊、鏈路激活、鏈路斷開、接收到請求消息、請求消息接收并處理完畢、發(fā)送應答消息、鏈路發(fā)生異常、用戶自定義事件中的一種或多種。
6.根據(jù)權利要求1所述的基于非阻塞通信的微服務系統(tǒng)設計方法,其特征在于:所述客戶端的實現(xiàn)步驟如下:
1)創(chuàng)建處理客戶端連接、I/O讀寫的反應線程組非阻塞事件輪詢模塊,通過構造函數(shù)指定I/O線程的個數(shù),默認為CPU內(nèi)核數(shù)的2倍;
2)用戶指定的通道類型創(chuàng)建用于客戶端連接的非阻塞端口通道;
3)創(chuàng)建默認的通道處理模塊,用于調(diào)度和執(zhí)行網(wǎng)絡事件;
4)異步發(fā)起TCP連接,判斷連接是否成功,如果成功,則直接將非阻塞端口通道注冊到多路復用器上,監(jiān)聽讀操作位,用于數(shù)據(jù)報讀取和消息發(fā)送;如果沒有立即連接成功,則注冊連接監(jiān)聽位到多路復用器,等待連接結果;
5)注冊對應的網(wǎng)絡監(jiān)聽狀態(tài)位到多路復用器;
6)由多路復用器在I/O現(xiàn)場中輪詢各通道,處理連接結果;
7)如果連接成功,發(fā)送連接成功事件,觸發(fā)通道管線執(zhí)行;
8)由通道管線調(diào)度執(zhí)行系統(tǒng)和用戶的通道處理模塊,執(zhí)行業(yè)務邏輯。