国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于Redis的RPC通信方法與流程

      文檔序號:11215802閱讀:2700來源:國知局
      一種基于Redis的RPC通信方法與流程

      本發(fā)明涉及服務(wù)端分布式架構(gòu)領(lǐng)域,尤其涉及一種基于redis的rpc通信方法。



      背景技術(shù):

      目前,集群服務(wù)器中,兩個服務(wù)器之間需要進(jìn)行遠(yuǎn)程調(diào)用時,一般采用如下方法:給每兩個可能發(fā)生rpc通信的服務(wù)建立網(wǎng)絡(luò)連接,然后通過tcp或udp協(xié)議傳遞需要調(diào)用的方法名和參數(shù)。

      然而,這種網(wǎng)狀連接結(jié)構(gòu)在大規(guī)模集群網(wǎng)絡(luò)中會呈現(xiàn)如下弊端,其一,它增加了服務(wù)端架構(gòu)的復(fù)雜性,使得服務(wù)端的調(diào)試和維護(hù)難度很高;其二,由于網(wǎng)絡(luò)不穩(wěn)定,出現(xiàn)調(diào)用失敗的可能性較高。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明的目的在于提供一種基于redis的rpc通信方法,從而解決現(xiàn)有技術(shù)中存在的前述問題。

      為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:

      一種基于redis的rpc通信方法,包括如下步驟:

      s1,建立調(diào)用端服務(wù)器與redis服務(wù)器之間的連接,獲取唯一的id;

      s2,所述調(diào)用端服務(wù)器根據(jù)所述唯一的id,訂閱對應(yīng)頻道;

      s3,被調(diào)用端服務(wù)器向所述redis服務(wù)器發(fā)送rpc數(shù)據(jù);

      s4,所述redis服務(wù)器將接收到的rpc數(shù)據(jù)通過s2中訂閱的所述對應(yīng)頻道轉(zhuǎn)發(fā)給所述調(diào)用端服務(wù)器;

      s5,所述調(diào)用端服務(wù)器接收到redis轉(zhuǎn)發(fā)的rpc數(shù)據(jù)后對其進(jìn)行解析協(xié)議,并調(diào)用對應(yīng)的方法,實(shí)現(xiàn)遠(yuǎn)程調(diào)用。

      優(yōu)選地,s2中,所述訂閱對應(yīng)頻道,具體為,通過redis服務(wù)的subscribe命令訂閱對應(yīng)頻道。

      優(yōu)選地,s3具體為:被調(diào)用端服務(wù)器通過redis的publish命令向所述redis服務(wù)器發(fā)送rpc數(shù)據(jù)。

      優(yōu)選地,s3中,所述rpc數(shù)據(jù)為二進(jìn)制的字符串?dāng)?shù)據(jù),包含調(diào)用方法名和參數(shù)內(nèi)容。

      本發(fā)明的有益效果是:本發(fā)明實(shí)施例提供的一種基于redis的rpc通信方法,基于redis的publish命令和subscribe命令,將被調(diào)用端服務(wù)器的rpc數(shù)據(jù)通過調(diào)用端服務(wù)器的唯一的訂閱頻道轉(zhuǎn)發(fā)至調(diào)用端服務(wù)器,解析后再調(diào)用對應(yīng)的方法,實(shí)現(xiàn)遠(yuǎn)程調(diào)用,由于調(diào)用端服務(wù)器和被調(diào)用端服務(wù)器之間沒有直接建立連接關(guān)系,而是通過redis服務(wù)間接的建立連接,所以,具有很高的解耦性,能夠讓服務(wù)端集群結(jié)構(gòu)變得簡單和清晰,同時避免了為每個服務(wù)端進(jìn)程編寫rpc連接,提高了服務(wù)端程序的開發(fā)效率。

      附圖說明

      圖1是本發(fā)明實(shí)施例提供的基于redis的rpc通信方法的流程示意圖;

      圖2是調(diào)用端服務(wù)器的工作流程示意圖。

      具體實(shí)施方式

      為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施方式僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      如圖1-2所示,本發(fā)明實(shí)施例提供了一種基于redis的rpc通信方法,包括如下步驟:

      s1,建立調(diào)用端服務(wù)器與redis服務(wù)器之間的連接,獲取唯一的id;

      s2,所述調(diào)用端服務(wù)器根據(jù)所述唯一的id,訂閱對應(yīng)頻道;

      s3,被調(diào)用端服務(wù)器向所述redis服務(wù)器發(fā)送rpc數(shù)據(jù);

      s4,所述redis服務(wù)器將接收到的rpc數(shù)據(jù)通過s2中訂閱的所述對應(yīng)頻道轉(zhuǎn)發(fā)給所述調(diào)用端服務(wù)器;

      s5,所述調(diào)用端服務(wù)器接收到redis轉(zhuǎn)發(fā)的rpc數(shù)據(jù)后對其進(jìn)行解析協(xié)議,并調(diào)用對應(yīng)的方法,實(shí)現(xiàn)遠(yuǎn)程調(diào)用。

      其中,s2中,所述訂閱對應(yīng)頻道,具體可以為,通過redis服務(wù)的subscribe命令訂閱對應(yīng)頻道。

      s3具體可以為:被調(diào)用端服務(wù)器通過redis的publish命令向所述redis服務(wù)器發(fā)送rpc數(shù)據(jù)。

      s3中,所述rpc數(shù)據(jù)為二進(jìn)制的字符串?dāng)?shù)據(jù),包含調(diào)用方法名和參數(shù)內(nèi)容。

      其中,rpc(remoteprocedurecallprotocol)為遠(yuǎn)程過程調(diào)用協(xié)議。

      本發(fā)明提供的上述方法的原理是:給每個服務(wù)命名,通過redis的subscribe命令訂閱自身對應(yīng)的頻道,當(dāng)需要遠(yuǎn)程調(diào)用時,通過reids的publish命令給對應(yīng)進(jìn)程的頻道發(fā)送數(shù)據(jù)。當(dāng)服務(wù)端進(jìn)程收到reids轉(zhuǎn)發(fā)的數(shù)據(jù)后,解析這些數(shù)據(jù),并使用解析出來的方法名和參數(shù)去執(zhí)行對應(yīng)的方法。

      在具體實(shí)施過程中,上述方法可分為服務(wù)初始化階段、rpc調(diào)用、rpc處理三個階段。其中服務(wù)初始化階段為服務(wù)端程序開啟時,建立redis連接,并通過redis的subscribe命令訂閱該服務(wù)對應(yīng)的頻道。rpc調(diào)用階段為服務(wù)端程序向另一個服務(wù)端程序發(fā)起rpc調(diào)用,主要是通過redis的publish命令向redis發(fā)送rpc數(shù)據(jù),通過redis將該數(shù)據(jù)轉(zhuǎn)發(fā)給對應(yīng)服務(wù)。rpc處理階段為接受rpc調(diào)用的服務(wù)處理rpc數(shù)據(jù),并做相應(yīng)處理的過程。

      上述三個階段的具體實(shí)現(xiàn)方式為:

      1、訂閱頻道

      訂閱頻道階段為程序連接redis并發(fā)出subscribe命令的過程,具體可以分為3個步驟。

      (1)根據(jù)配置文件或啟動參數(shù),確定每個服務(wù)的唯一id;

      (2)服務(wù)程序與redis建立連接;

      (3)服務(wù)程序通過subscribe命令,訂閱自身id的頻道。

      2、發(fā)送rpc數(shù)據(jù)

      需要調(diào)用rpc協(xié)議的服務(wù)通過redis的publish命令給redis發(fā)送rpc數(shù)據(jù),rpc數(shù)據(jù)為二進(jìn)制的字符串?dāng)?shù)據(jù),包含了調(diào)用方法名、參數(shù)等內(nèi)容。一種可能的數(shù)據(jù)格式如下表所示:

      被調(diào)用端將以上協(xié)議格式(或其他類似協(xié)議)的二進(jìn)制數(shù)據(jù),通過redis的publish命令發(fā)送到調(diào)用端id所對應(yīng)的頻道。redis將會把數(shù)據(jù)轉(zhuǎn)發(fā)到訂閱對應(yīng)頻道的服務(wù)端程序上,即調(diào)用端上。

      3、rpc處理

      調(diào)用端收到redis轉(zhuǎn)發(fā)的數(shù)據(jù)后,先解析協(xié)議,將方法名和各個參數(shù)解析出來,然后調(diào)用對應(yīng)的方法,實(shí)現(xiàn)遠(yuǎn)程調(diào)用。如若調(diào)用端需要回應(yīng)被調(diào)用端,調(diào)用端亦可通過publish命名向被調(diào)用端推送數(shù)據(jù)。

      上述方法中,服務(wù)器集群包含各個服務(wù)端程序,以及一個redis服務(wù)(或redis集群),服務(wù)端程序之間并不相互連接,通過redis轉(zhuǎn)發(fā)消息,實(shí)現(xiàn)rpc調(diào)用。

      通過采用本發(fā)明公開的上述技術(shù)方案,得到了如下有益的效果:本發(fā)明實(shí)施例提供的一種基于redis的rpc通信方法,基于redis的publish命令和subscribe命令,將被調(diào)用端服務(wù)器的rpc數(shù)據(jù)通過調(diào)用端服務(wù)器的唯一的訂閱頻道轉(zhuǎn)發(fā)至調(diào)用端服務(wù)器,解析后再調(diào)用對應(yīng)的方法,實(shí)現(xiàn)遠(yuǎn)程調(diào)用,由于調(diào)用端服務(wù)器和被調(diào)用端服務(wù)器之間沒有直接建立連接關(guān)系,而是通過redis服務(wù)間接的建立連接,所以,具有很高的解耦性,能夠讓服務(wù)端集群結(jié)構(gòu)變得簡單和清晰,同時避免了為每個服務(wù)端進(jìn)程編寫rpc連接,提高了服務(wù)端程序的開發(fā)效率。

      本說明書中的各個實(shí)施例均采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似的部分互相參見即可。

      本領(lǐng)域人員應(yīng)該理解的是,上述實(shí)施例提供的方法步驟的時序可根據(jù)實(shí)際情況進(jìn)行適應(yīng)性調(diào)整,也可根據(jù)實(shí)際情況并發(fā)進(jìn)行。

      上述實(shí)施例涉及的方法中的全部或部分步驟可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機(jī)設(shè)備可讀取的存儲介質(zhì)中,用于執(zhí)行上述各實(shí)施例方法所述的全部或部分步驟。所述計算機(jī)設(shè)備,例如:個人計算機(jī)、服務(wù)器、網(wǎng)絡(luò)設(shè)備、智能移動終端、智能家居設(shè)備、穿戴式智能設(shè)備、車載智能設(shè)備等;所述的存儲介質(zhì),例如:ram、rom、磁碟、磁帶、光盤、閃存、u盤、移動硬盤、存儲卡、記憶棒、網(wǎng)絡(luò)服務(wù)器存儲、網(wǎng)絡(luò)云存儲等。

      最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。

      以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視本發(fā)明的保護(hù)范圍。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1