国产精品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>

      一種多節(jié)點數(shù)據(jù)交互的實現(xiàn)方法

      文檔序號:8298917閱讀:1276來源:國知局
      一種多節(jié)點數(shù)據(jù)交互的實現(xiàn)方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及多節(jié)點之間的業(yè)務(wù)處理,特別涉及一種節(jié)點數(shù)據(jù)交互的實現(xiàn)方法。
      【背景技術(shù)】
      [0002]隨著計算機以及網(wǎng)絡(luò)的高速發(fā)展,分布式處理系統(tǒng)被大規(guī)模應(yīng)用。分布式系統(tǒng)中某個節(jié)點為了訪問其他機器節(jié)點的數(shù)據(jù)與資源,一般會通過自定義報文格式的方式進行數(shù)據(jù)交互或業(yè)務(wù)處理。這種方式的通信效率非常低而且維護開發(fā)工作量較大。當(dāng)增加或修改某個功能時有可能需要增加新的報文格式或?qū)σ延械膱笪母袷竭M行修改,因此系統(tǒng)中模塊之間的耦合程度較高,獨立性比較差。如果機器節(jié)點之間通過過程調(diào)用的方式來訪問其他機器節(jié)點的數(shù)據(jù)與資源,就可以大大降低進程實現(xiàn)的復(fù)雜度,從而降低進程之間的耦合性,讓系統(tǒng)設(shè)計變得更加簡單。從某種意義上來講,遠程過程調(diào)用可看作是把分割的程序通過網(wǎng)絡(luò)進行重組的過程。通過遠程過程調(diào)用,當(dāng)要訪問其他機器系統(tǒng)上數(shù)據(jù)的時候就不需每次拷貝整個數(shù)據(jù)庫或它的大部分程序到用戶系統(tǒng),遠程機器節(jié)點只需要處理來自客戶端的處理請求,甚至只執(zhí)行一些數(shù)據(jù)計算,把執(zhí)行的結(jié)果再發(fā)送給調(diào)用者。當(dāng)數(shù)據(jù)存放在某個機器節(jié)點時,其他機器節(jié)點可以很方便的通過遠程過程訪問其數(shù)據(jù),因此極大提高了分布式系統(tǒng)中計算機資源的利用率。
      [0003]過程調(diào)用一般是指將控制從調(diào)用者傳遞到被調(diào)用者,被調(diào)用者在執(zhí)行結(jié)束后將控制交還給調(diào)用者。目前大多數(shù)調(diào)用者和被調(diào)用者是在同一臺機器上,它們是在生成可執(zhí)行程序時由編譯器鏈接起來的,這種過程調(diào)用一般稱為本地過程調(diào)用。遠程過程調(diào)用指的是由本地機器系統(tǒng)上的某個進程激活遠程機器系統(tǒng)上的另外一個進程,遠程系統(tǒng)調(diào)用對調(diào)用者表現(xiàn)為本地過程調(diào)用,但實際上是調(diào)用了遠程系統(tǒng)上的過程。
      [0004]處理遠程過程調(diào)用的進程由本地客戶端進程和其他機器節(jié)點進程共同作用。遠程過程調(diào)用對于本地客戶端表現(xiàn)為由調(diào)用進程在執(zhí)行某個控制時首先將過程調(diào)用需要的參數(shù)以及需要調(diào)用的過程生成對應(yīng)的消息,并通過網(wǎng)絡(luò)發(fā)往其他機器節(jié)點其他機器節(jié)點接到消息后調(diào)用相應(yīng)過程,調(diào)用結(jié)束后將執(zhí)行結(jié)果通過網(wǎng)絡(luò)發(fā)送至調(diào)用者。
      [0005]傳統(tǒng)的過程調(diào)用是由開發(fā)人員在本地編譯完成,并只能運行在本地機器上,這種結(jié)構(gòu)已經(jīng)無法適應(yīng)分布式系統(tǒng)應(yīng)用的實際需求。傳統(tǒng)過程調(diào)用沒有辦法充分利用網(wǎng)絡(luò)上其他機器節(jié)點的系統(tǒng)資源,也沒有辦法提高代碼在實體間的共享程度,使得分布式系統(tǒng)機器資源沒有得到充分的利用。而遠程過程調(diào)用很好地解決了傳統(tǒng)過程調(diào)用,通過遠程調(diào)用可以充分利用非共享內(nèi)存的多處理器環(huán)境并應(yīng)用分布在多臺機器節(jié)點上,應(yīng)用程序就像在一個多處理器的計算機上運行一樣,可以方便的實現(xiàn)過程代碼共享,提高系統(tǒng)資源的利用率。遠程過程調(diào)用和通過定義報文傳遞處理消息相比,前者語義更加清楚、使用更加簡單、通用性以及可擴展性更強,而且有著更高的通信效率。
      [0006]當(dāng)在系統(tǒng)或節(jié)點之間采用遠程過程調(diào)用(Remote Procedure Call,RPC)之后,原先節(jié)點之間的數(shù)據(jù)及操作處理由圖1變成圖2的模式,進程在處理其他節(jié)點或進程的數(shù)據(jù)就變得和在自己本進程內(nèi)處理一樣簡單,程序代碼更加簡單,減小了系統(tǒng)設(shè)計的復(fù)雜性。

      【發(fā)明內(nèi)容】

      [0007]發(fā)明目的:針對上述現(xiàn)有技術(shù),提出一種多節(jié)點數(shù)據(jù)交互的實現(xiàn)方法,通過遠程過程調(diào)用實現(xiàn)數(shù)據(jù)交互,簡化業(yè)務(wù)數(shù)據(jù)處理流程。
      [0008]技術(shù)方案:一種多節(jié)點數(shù)據(jù)交互的實現(xiàn)方法,在每個節(jié)點上設(shè)置數(shù)據(jù)服務(wù)模塊,任一節(jié)點上的數(shù)據(jù)服務(wù)模塊用于實現(xiàn)該節(jié)點自身進程之間的數(shù)據(jù)交互,同時不同節(jié)點上的數(shù)據(jù)服務(wù)模塊實現(xiàn)不同節(jié)點進程之間的數(shù)據(jù)交互;所述數(shù)據(jù)服務(wù)模塊通過遠程過程調(diào)用協(xié)議實現(xiàn)進程間的數(shù)據(jù)交互,所述遠程過程調(diào)用協(xié)議的底層通過Qt元對象系統(tǒng)實現(xiàn)。
      [0009]進一步的,所述遠程過程調(diào)用協(xié)議的底層通過Qt元對象系統(tǒng)實現(xiàn)時,Qt元對象系統(tǒng)中QObject子類的Slot函數(shù)所對應(yīng)的輸入?yún)?shù)作為過程調(diào)用的輸入,Slot函數(shù)的返回值作為過程調(diào)用的輸出結(jié)果。
      [0010]進一步的,所述遠程過程調(diào)用中,當(dāng)客戶端任一進程需要獲得其他機器節(jié)點的變化數(shù)據(jù)的時候,不同節(jié)點之間變化數(shù)據(jù)的通知包括如下步驟:首先在客戶端的數(shù)據(jù)服務(wù)模塊上對所述數(shù)據(jù)或該數(shù)據(jù)對象類型進行注冊;當(dāng)其它機器節(jié)點的數(shù)據(jù)變化后,將變化數(shù)據(jù)發(fā)送給客戶端的數(shù)據(jù)服務(wù)模塊;然后由客戶端的服務(wù)模塊通過進程間過程調(diào)用通知所述注冊數(shù)據(jù)或數(shù)據(jù)對象類型所對應(yīng)的進程,在所述對應(yīng)進程的進程空間內(nèi)執(zhí)行相應(yīng)的回調(diào)函數(shù)。
      [0011]進一步的,所述遠程過程調(diào)用包括如下具體步驟:
      [0012]f.機器節(jié)點按照功能分類,從QObject子類繼承得到若干個對象,節(jié)點之間的遠程過程調(diào)用通過所述若干個對象所對應(yīng)的Slot函數(shù)實現(xiàn),并將所述QObject子類實例化為實例對象后加入到服務(wù)對象列表;
      [0013]g.客戶端當(dāng)進行遠程過程調(diào)用時,通過套接字將調(diào)用請求傳遞至對應(yīng)的機器節(jié)點,所述客戶端在請求發(fā)送后進入阻塞狀態(tài),等待所述對應(yīng)的機器節(jié)點的返回結(jié)果;所述調(diào)用請求包括要執(zhí)行的對象類名、成員函數(shù)名及參數(shù);
      [0014]h.所述對應(yīng)的機器節(jié)點在收到所述調(diào)用請求后,首先根據(jù)對象類名在服務(wù)對象列表中找到對應(yīng)的實例對象,然后根據(jù)成員函數(shù)名通過Qt元對象系統(tǒng)找到對應(yīng)類的Slot函數(shù)的元對象方法,再通過解析所述元對象方法的參數(shù)類型,依次將傳入的參數(shù)轉(zhuǎn)換成對應(yīng)Slot函數(shù)所需的參數(shù)類型,然后通過元對象的invoke方法執(zhí)行所述Slot函數(shù),實現(xiàn)客戶端的請求;
      [0015]1.所述對應(yīng)的機器節(jié)點將對應(yīng)的執(zhí)行結(jié)果以及函數(shù)返回結(jié)果通過套接字發(fā)送至客戶端,至此所述對應(yīng)的機器節(jié)點完成了一次遠程過程調(diào)用服務(wù)請求;
      [0016]j.客戶端在收到所述對應(yīng)的機器節(jié)點的執(zhí)行結(jié)果以及函數(shù)返回結(jié)果后,首先根據(jù)所述執(zhí)行結(jié)果判斷執(zhí)行是否成功:如果執(zhí)行成功,則提取過程調(diào)用的函數(shù)返回結(jié)果并結(jié)束阻塞狀態(tài),至此客戶端發(fā)起的遠程過程調(diào)用執(zhí)行結(jié)束;如果執(zhí)行失敗,則根據(jù)執(zhí)行結(jié)果錯誤代碼進行相應(yīng)的處理。
      [0017]進一步的,客戶端設(shè)置過程調(diào)用超時時間,如果在指定的時間內(nèi)所述對應(yīng)的機器節(jié)點沒有響應(yīng)或沒有將執(zhí)行結(jié)果或函數(shù)返回結(jié)果傳遞至客戶端,過程調(diào)用自動結(jié)束并返回超時的錯誤代碼。
      [0018]有益效果:本發(fā)明的多節(jié)點數(shù)據(jù)交互的實現(xiàn)方法,通過遠程過程調(diào)用實現(xiàn)數(shù)據(jù)交互,遠程過程調(diào)用的底層采用Qt元對象系統(tǒng)實現(xiàn)。遠程過程調(diào)用中,從QObject子類定位遠程過程調(diào)用指定的Slot槽函數(shù)并執(zhí)行,實現(xiàn)了靈活的過程調(diào)用處理。根據(jù)C++重載的特定,可以在QObject子類定義參數(shù)不同的同一個函數(shù),這樣調(diào)用者就可以根據(jù)自己的需要選擇適合的函數(shù),讓遠程過程調(diào)用變得更加靈活。利用本發(fā)明方法實現(xiàn)的基于Qt元對象的遠程過程調(diào)用機制,當(dāng)需要添加服務(wù)內(nèi)容時,只需要在QObject子類中增加相應(yīng)的Slot槽函數(shù)或添加新的QObject子類實例,然后遠程過程調(diào)用客戶端在調(diào)用時指定函數(shù)名稱和函數(shù)參數(shù)即可完成調(diào)用。因此,基于Qt元對象系統(tǒng)的遠程過程調(diào)用服務(wù)模塊在擴展、升級與維護等方面非常簡單,同時讓系統(tǒng)模塊的開發(fā)更加靈活,而且可以在多個平臺上運行。
      【附圖說明】
      [0019]圖1是傳統(tǒng)方式下節(jié)點之間的數(shù)據(jù)業(yè)務(wù)處理結(jié)構(gòu)圖;
      [0020]圖2是采用RPC實現(xiàn)節(jié)點之間的數(shù)據(jù)交互處理結(jié)構(gòu)圖;
      [0021]圖3是本發(fā)明多節(jié)點數(shù)據(jù)交互多節(jié)點通訊示意圖;
      [0022]圖4是多節(jié)點數(shù)據(jù)交互的實現(xiàn)方法流程圖;
      [0023]圖5是客戶端在執(zhí)行遠程過程調(diào)用時的調(diào)用形式。
      【具體實施方式】
      [0024]下面結(jié)合附圖對本發(fā)明做更進一步的解釋。
      [0025]如圖3所示,一種多節(jié)點數(shù)據(jù)交互的實現(xiàn)方法,在每個機器節(jié)點上布置數(shù)據(jù)服務(wù)模塊,任一節(jié)點上的數(shù)據(jù)服務(wù)模塊用于實現(xiàn)該節(jié)點自身進程之間的數(shù)據(jù)交互,不同節(jié)點上的數(shù)據(jù)服務(wù)模塊實現(xiàn)不同節(jié)點進程之間的數(shù)據(jù)交互。數(shù)據(jù)服務(wù)模塊基于遠程過程調(diào)用協(xié)議實現(xiàn)進程間的數(shù)據(jù)交互,遠程過程調(diào)用協(xié)議的底層通過Qt元對象系統(tǒng)實現(xiàn)。節(jié)點之間的數(shù)據(jù)交互包括數(shù)據(jù)訪問與操作、文件傳輸以及節(jié)點的數(shù)據(jù)備份;遠程調(diào)用過程基于Qt元對象系統(tǒng)實現(xiàn)服務(wù)查找、參數(shù)輸入以及結(jié)果返回。進程與本節(jié)點進程或其他節(jié)點進程之間進行數(shù)據(jù)交互操作的時候均為同步過程調(diào)用;對于同一節(jié)點之間的數(shù)據(jù)交互,通訊方式采用管道;對于不同節(jié)點之間的數(shù)據(jù)交互,通訊方式根據(jù)IP地址采用套接字;通訊過程中數(shù)據(jù)傳輸采用加密的方式進行傳輸,提高系統(tǒng)的可靠性與安全性。Qt元對象系統(tǒng)中QObject子類的函數(shù)所對應(yīng)的輸入?yún)?shù)作為過程調(diào)用的輸入,函數(shù)的返回值作為過程調(diào)用的輸出結(jié)果。
      [0026]Qt是一個跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架。Qt是面向?qū)ο蟮目蚣?,使用特殊的代碼生成擴展以及一些宏,易于擴展,允許組件編程;擴展稱為元對象編譯器(Meta Object Compiler,moc)。Qt的良好封裝機制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非
      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1