1.一種支持異步模式的分布式微服務框架系統(tǒng),其特征在于,包括服務網(wǎng)關(guān)代理層、服務提供端、服務注冊中心和服務調(diào)用端;
所述服務網(wǎng)關(guān)代理層包括協(xié)議轉(zhuǎn)換器和傳輸器,所述協(xié)議轉(zhuǎn)換器負責外部請求的數(shù)據(jù)和內(nèi)部服務支撐的協(xié)議格式數(shù)據(jù)相互轉(zhuǎn)換,所述傳輸器負責請求數(shù)據(jù)和響應數(shù)據(jù)的傳輸;
所述服務提供端負責發(fā)布服務到服務注冊中心,收到服務請求后進行業(yè)務處理;
所述服務注冊中心負責發(fā)布服務登記,服務的查找處理;
所述服務調(diào)用端根據(jù)指定的服務調(diào)用信息通過服務注冊中心查找服務目的地,發(fā)起遠程服務的請求并獲取服務響應數(shù)據(jù);
所述傳輸器在接收到遠程調(diào)用端的請求數(shù)據(jù)后,通過協(xié)議轉(zhuǎn)換器轉(zhuǎn)換成協(xié)議格式數(shù)據(jù),然后通過服務調(diào)用端程序發(fā)送組裝好的服務請求給服務提供端,服務提供端發(fā)布服務到服務注冊中心,服務調(diào)用端通過服務注冊中心查找服務目的地并獲取服務響應數(shù)據(jù),所述傳輸器在收到該服務響應數(shù)據(jù)后再轉(zhuǎn)發(fā)給遠程調(diào)用端。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述協(xié)議轉(zhuǎn)換器主要包括協(xié)議處理器和序列化處理器兩部分,負責所有服務請求數(shù)據(jù)和響應數(shù)據(jù)的組裝、序列化和反序列化,翻譯成主編程模型可直接處理的數(shù)據(jù);所述協(xié)議轉(zhuǎn)換器中的協(xié)議處理器、序列化處理器都能自由插拔;所述傳輸器包括WEB SOCKET傳輸器和HTTP傳輸器;所述遠程調(diào)用端包括IOS遠程調(diào)用端、Android遠程調(diào)用端和WEB遠程調(diào)用端。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述服務提供端,包括分布式緩存模塊,注解模型,Ti-Lnk協(xié)議,回調(diào)Stub處理模塊以及RabbitMq處理器;所述分布式緩存模塊負責根據(jù)服務提供接口的參數(shù)緩存配置,使用分布式緩存存儲中間件,提供數(shù)據(jù)緩存處理;所述注解模型負責使用主編程語言實現(xiàn)服務注冊,服務調(diào)用注入,服務參數(shù),緩存配置的注解功能;所述回調(diào)Stub處理模塊負責存儲異步回調(diào)服務的描述信息,包括服務名稱,使用的協(xié)議,服務的接口描述,方法簽名,使得服務提供端在異步回調(diào)時可以查找到目標服務接收地址;所述RabbitMq處理器負責RabbitMq消息隊列的操作,包括在調(diào)用服務時把組裝好的協(xié)議數(shù)據(jù)發(fā)送到服務提供端的監(jiān)聽隊列和服務調(diào)用端等待響應和異步回調(diào)的監(jiān)聽隊列;所述Ti-Lnk協(xié)議負責服務請求和響應數(shù)據(jù)的協(xié)議組裝和拆包處理;所述本地緩存模塊負責服務調(diào)用過程中的本地緩存處理,主要實現(xiàn)了線程級別的緩存處理;
所述服務提供端在業(yè)務處理前,服務注冊中心會根據(jù)配置的緩存服務查找命中的緩存數(shù)據(jù),如果命中,則直接返回,否則繼續(xù)后續(xù)業(yè)務處理;在服務調(diào)用端需要異步服務回調(diào)時,將回調(diào)Stub信息存儲到緩存服務中,當服務請求處理完成后,查找對應的回調(diào)信息,并通過服務注冊中心查找對應的回調(diào)服務目的地,完成回調(diào)處理;
所有服務提供端啟動后會把需要對外發(fā)布的服務登記到服務注冊中心,包括服務名稱,服務目的地尋址信息,服務可調(diào)用的接口名稱,服務請求的參數(shù)類型和內(nèi)容,服務的回調(diào)信息;當服務調(diào)用端需要請求時,會使用服務名稱查找對應的尋址信息,再進行遠程調(diào)用。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述服務調(diào)用端包括本地緩存模塊,注解模型,Ti-Lnk協(xié)議以及RabbitMq傳輸器;所述本地緩存模塊負責服務調(diào)用過程中的本地緩存處理,主要實現(xiàn)了線程級別的緩存處理;所述注解模型負責使用主編程語言實現(xiàn)服務注冊,服務調(diào)用注入,服務參數(shù),緩存配置的注解功能;所述RabbitMq處理器負責RabbitMq消息隊列的操作,包括在調(diào)用服務時把組裝好的協(xié)議數(shù)據(jù)發(fā)送到服務提供端的監(jiān)聽隊列和服務調(diào)用端等待響應和異步回調(diào)的監(jiān)聽隊列;所述Ti-Lnk協(xié)議負責服務請求和響應數(shù)據(jù)的協(xié)議組裝和拆包處理;所述本地緩存模塊負責服務調(diào)用過程中的本地緩存處理,主要實現(xiàn)了線程級別的緩存處理;
所述服務調(diào)用端在發(fā)起遠程服務的請求前,會根據(jù)調(diào)用請求信息先查找本地緩存是否存在命中的緩存數(shù)據(jù),如果命中,直接返回緩存數(shù)據(jù),否則繼續(xù)后續(xù)的遠程服務請求。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述內(nèi)部服務支撐的協(xié)議格式為Ti-lnk協(xié)議,所述Ti-Lnk協(xié)議采用幀式報文結(jié)構(gòu),每幀主要由報文長度域和報文內(nèi)容域構(gòu)成,報文長度域使用BIG_ENDIAN編碼,占用4個字節(jié),報文內(nèi)容域使用JSON報文格式,并且在內(nèi)容長度超過128k時,進行壓縮傳輸處理。
6.一種如權(quán)利要求1-5任一項所述的系統(tǒng)的實現(xiàn)方法,其特征在于,包括Ti-Lnk協(xié)議的實現(xiàn),服務注冊中心功能實現(xiàn),服務調(diào)用過程實現(xiàn)以及服務網(wǎng)關(guān)實現(xiàn)。
7.如權(quán)利要求6所述的方法,其特征在于,所述Ti-Lnk協(xié)議的實現(xiàn)包括如下步驟:
a)Ti-Lnk服務請求報文:報文頭包括調(diào)用服務的標識,調(diào)用的服務接口名稱,調(diào)用的接口參數(shù)簽名,報文體包括需要調(diào)用服務傳入的各項參數(shù),每個參數(shù)是一幀;
b)Ti-Lnk服務提供端響應報文:報文頭包括服務端信息,服務版本,應答類型,服務會話標識信息,報文體內(nèi)容是服務響應結(jié)果。
8.如權(quán)利要求6所述的方法,其特征在于,所述服務注冊中心功能實現(xiàn)包括如下步驟:
a)服務提供端在啟動服務時會將服務信息提交到服務注冊中心,包括服務名稱,服務接口,接口請求參數(shù)和類型,服務地址信息;
b)服務注冊中心收到服務注冊請求后將注冊服務納入到心跳監(jiān)測隊列中,保持和服務提供端的聯(lián)系,一旦服務出現(xiàn)故障,立即更新當前服務注冊中心的服務列表,并向所有相關(guān)的服務訂閱者進行服務信息變更推送;
c)服務調(diào)用端會把所有需要調(diào)用的服務列表向服務注冊中心發(fā)送訂閱請求,服務注冊中心會同步返回請求的服務詳細調(diào)用信息,同時和調(diào)用方維系一條長鏈接來推送訂閱服務的變更;
d)服務調(diào)用端在實際服務調(diào)用時,會從本地服務列表直接查找對應的目標服務信息,如在程序是動態(tài)調(diào)用,沒有事先訂閱的,會直接發(fā)起新的服務查找請求;在查找結(jié)果返回后,更新本地服務列表。
9.如權(quán)利要求6所述的方法,其特征在于,所述服務調(diào)用過程實現(xiàn)包括如下步驟:
a)服務調(diào)用端發(fā)起調(diào)用后首先會在本地緩存中查找是否存在有效的擊中數(shù)據(jù),如果命中則直接返回緩存結(jié)果,否則繼續(xù)后續(xù)調(diào)用處理;
b)服務調(diào)用端根據(jù)調(diào)用服務名稱在本地服務列表中查找服務尋址信息,如沒有查找到直接向服務注冊中心發(fā)起查詢請求,獲取到服務目標地址信息后,先進行協(xié)議層數(shù)據(jù)的轉(zhuǎn)換,包括數(shù)據(jù)組裝和序列化操作,完成后選擇對應的傳輸器發(fā)送到目標地址,如調(diào)用是異步回調(diào)模式,在確認送達后立即返回;
c)服務提供端通過傳輸器收到請求的數(shù)據(jù)后,先根據(jù)對應的協(xié)議進行反序列化和數(shù)據(jù)解包操作,然后判定此次調(diào)用的模式,如果是異步服務回調(diào),會將回調(diào)服務的Stub保存在分布式緩存存儲中,然后生成代理對象進入服務方法調(diào)用;
d)服務提供端根據(jù)請求數(shù)據(jù)找到對應的服務程序,同時根據(jù)服務對應的緩存配置來查找緩存數(shù)據(jù);
e)如緩存數(shù)據(jù)沒有命中,服務提供端會繼續(xù)服務內(nèi)部的邏輯處理,處理完成后,判定調(diào)用模式,如果是異步服務回調(diào),會取出當時存儲的回調(diào)Stub,并請求服務注冊中心,查詢到有效的服務目標地址,接著根據(jù)對應的協(xié)議和傳輸器,執(zhí)行數(shù)據(jù)組裝,序列化和發(fā)送操作;
f)服務調(diào)用端收到響應數(shù)據(jù)后,按照對應協(xié)議進行數(shù)據(jù)解包和反序列化的操作,保存在當前線程級別的緩存存儲中,再進行后續(xù)處理,調(diào)用過程結(jié)束。
10.如權(quán)利要求6所述的方法,其特征在于,所述服務網(wǎng)關(guān)實現(xiàn)包括如下步驟:
a)遠程調(diào)用端發(fā)起服務調(diào)用請求,通過WEB SOCKET傳輸器發(fā)送請求數(shù)據(jù)到服務網(wǎng)關(guān)代理層;
b)服務網(wǎng)關(guān)代理層使用WEB SOCKET傳輸器收到請求數(shù)據(jù)后,先對請求數(shù)據(jù)的頭信息進行解析,拿到請求的服務信息后,在本地代理服務列表進行映射查找;
c)確定后臺服務名稱和接口后,將目標服務請求地址傳入服務調(diào)用端程序,然后開始執(zhí)行服務調(diào)用;
d)服務調(diào)用端程序返回結(jié)果后,服務網(wǎng)關(guān)再次根據(jù)遠程調(diào)用端使用的協(xié)議組裝響應數(shù)據(jù)和對應的WEB SOCKET傳輸器發(fā)送請求響應。