欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

進程標(biāo)記方法及裝置與流程

文檔序號:11778428閱讀:489來源:國知局
進程標(biāo)記方法及裝置與流程

本發(fā)明實施例涉及通信技術(shù)領(lǐng)域,尤其涉及一種進程標(biāo)記方法及裝置。



背景技術(shù):

遠程過程調(diào)用協(xié)議,是一種通過網(wǎng)絡(luò)從遠程計算機程序上請求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。遠程過程調(diào)用協(xié)議假定某些傳輸協(xié)議的存在,如tcp或udp,為通信程序之間攜帶信息數(shù)據(jù)。在osi網(wǎng)絡(luò)通信模型中,遠程過程調(diào)用協(xié)議跨越了傳輸層和應(yīng)用層。遠程過程調(diào)用協(xié)議使得開發(fā)包括網(wǎng)絡(luò)分布式多程序在內(nèi)的應(yīng)用程序更加容易。遠程過程調(diào)用協(xié)議采用客戶機/服務(wù)器模式。請求程序就是一個客戶機,而服務(wù)提供程序就是一個服務(wù)器。首先,客戶機調(diào)用進程發(fā)送一個有進程參數(shù)的調(diào)用信息到服務(wù)進程,然后等待應(yīng)答信息。在服務(wù)器端,進程保持睡眠狀態(tài)直到調(diào)用信息到達為止。當(dāng)一個調(diào)用信息到達,服務(wù)器獲得進程參數(shù),計算結(jié)果,發(fā)送答復(fù)信息,然后等待下一個調(diào)用信息,最后,客戶端調(diào)用進程接收答復(fù)信息,獲得進程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進行。

但是,一個遠程過程調(diào)用協(xié)議的處理線程對應(yīng)一個高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)的函數(shù),該函數(shù)用于跟蹤該線程的處理狀態(tài),如果多個遠程過程調(diào)用協(xié)議的處理線程并發(fā)執(zhí)行,將導(dǎo)致需要大量的高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)的函數(shù),造成遠程過程調(diào)用協(xié)議和異步隊列的業(yè)務(wù)消息不準(zhǔn)確。



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

本發(fā)明實施例提供一種進程標(biāo)記方法及裝置,以提高遠程過程調(diào)用協(xié)議和異步隊列的業(yè)務(wù)消息的準(zhǔn)確度。

本發(fā)明實施例的一個方面是提供一種進程標(biāo)記方法,包括:

將遠程過程調(diào)用協(xié)議的請求信息寫入第一序列中;

處理數(shù)據(jù)庫事務(wù);

如果數(shù)據(jù)庫事務(wù)失敗,則移動所述第一序列的偏移坐標(biāo),所述偏移坐標(biāo)用于標(biāo)識所述請求信息已被處理完畢;

如果數(shù)據(jù)庫事務(wù)成功,則將所述請求信息寫入第二序列中;

如果所述請求信息成功寫入所述第二序列中,則移動所述第一序列的偏移坐標(biāo)。

本發(fā)明實施例的另一個方面是提供一種進程標(biāo)記裝置,包括:

寫入模塊,用于將遠程過程調(diào)用協(xié)議的請求信息寫入第一序列中;

處理模塊,用于處理數(shù)據(jù)庫事務(wù);

移動模塊,用于當(dāng)數(shù)據(jù)庫事務(wù)失敗時,移動所述第一序列的偏移坐標(biāo),所述偏移坐標(biāo)用于標(biāo)識所述請求信息已被處理完畢;

如果數(shù)據(jù)庫事務(wù)成功,則所述寫入模塊將所述請求信息寫入第二序列中;

如果所述請求信息成功寫入所述第二序列中,則所述移動模塊移動所述第一序列的偏移坐標(biāo)。

本發(fā)明實施例提供的進程標(biāo)記方法及裝置,通過把隊列技術(shù)應(yīng)用到純遠程過程調(diào)用協(xié)議同步組合的微服務(wù)集群里,提高了遠程過程調(diào)用協(xié)議和異步隊列的業(yè)務(wù)消息的準(zhǔn)確度。

附圖說明

圖1為本發(fā)明實施例提供的進程標(biāo)記方法流程圖;

圖2為本發(fā)明另一實施例提供的進程標(biāo)記方法流程圖;

圖3為本發(fā)明實施例提供的進程標(biāo)記裝置的結(jié)構(gòu)圖;

圖4為本發(fā)明另一實施例提供的進程標(biāo)記裝置的結(jié)構(gòu)圖。

具體實施方式

為了防止數(shù)據(jù)庫寫入成功,然后寫隊列,但是隊列寫入失敗,返回錯誤,讓上游重試,上游可能會放棄,導(dǎo)致消息丟失的現(xiàn)象,或者是數(shù)據(jù)庫寫入成功,然后全機房斷電的現(xiàn)象出現(xiàn),也就是說我們需要防止當(dāng)數(shù)據(jù)庫的事務(wù)成功時,消息一定要保證寫入隊列里,如果數(shù)據(jù)庫的事務(wù)失敗,消息不應(yīng)該出現(xiàn)在隊列里,所以肯定不能先寫隊列,再寫數(shù)據(jù)庫,否則要讓高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)支持消息的回滾的現(xiàn)象發(fā)生。本實施例提出僅依靠高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)和mysql這兩個組件,實現(xiàn)數(shù)據(jù)庫與隊列的一致性的方法。

圖1為本發(fā)明實施例提供的進程標(biāo)記方法流程圖。本發(fā)明實施例提供的進程標(biāo)記方法具體步驟如下:

步驟s101、將遠程過程調(diào)用協(xié)議的請求信息寫入第一序列中。

在本實施例中,第一序列具體可以是頭寫入隊列,第二序列具體可以是事務(wù)隊列。遠程過程調(diào)用協(xié)議采用客戶機/服務(wù)器模式。請求程序就是一個客戶機,而服務(wù)提供程序就是一個服務(wù)器。首先,客戶機調(diào)用進程發(fā)送一個有進程參數(shù)的調(diào)用信息到服務(wù)進程,然后等待應(yīng)答信息。在服務(wù)器端,進程保持睡眠狀態(tài)直到調(diào)用信息到達為止。當(dāng)一個調(diào)用信息到達,服務(wù)器獲得進程參數(shù),計算結(jié)果,發(fā)送答復(fù)信息,然后等待下一個調(diào)用信息,最后,客戶端調(diào)用進程接收答復(fù)信息,獲得進程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進行。

在本實施例中,可以將遠程過程調(diào)用協(xié)議的請求信息寫入頭寫入隊列中,如果這個消息就寫入失敗,直接返回錯誤給調(diào)用方,讓其重試。

步驟s102、處理數(shù)據(jù)庫事務(wù)。

步驟s103、如果數(shù)據(jù)庫事務(wù)失敗,則移動所述第一序列的偏移坐標(biāo),所述偏移坐標(biāo)用于標(biāo)識所述請求信息已被處理完畢。

如果數(shù)據(jù)庫事務(wù)失敗,移動頭寫入隊列的偏移坐標(biāo),代表這個請求已經(jīng)被處理完畢。

步驟s104、如果數(shù)據(jù)庫事務(wù)成功,則將所述請求信息寫入第二序列中。

如果數(shù)據(jù)庫事務(wù)成功,接下來寫入事務(wù)隊列這個程序。

步驟s105、如果所述請求信息成功寫入所述第二序列中,則移動所述第一序列的偏移坐標(biāo)。

如果寫入隊列成功,移動頭寫入隊列的偏移坐標(biāo),代表這個請求已經(jīng)被處理完畢。另外,如果寫入隊列失敗,返回成功給調(diào)用方,然后異步去重試寫入事務(wù)隊列這個程序。

在數(shù)據(jù)庫事務(wù)成功到消息寫入到事務(wù)隊列這個程序中間,頭寫入隊列的偏移坐標(biāo)都是沒有被移動的,也就是如果這個過程被中斷,可以從頭寫入隊列恢復(fù)回來。經(jīng)過重試,最終事務(wù)隊列寫入成功。這個時候移動頭寫入隊列的偏移坐標(biāo),標(biāo)記這個請求被處理完畢。

以上過程,通過引入頭寫入隊列以及控制這個程序的偏移坐標(biāo)位置,來標(biāo)記完整的分布式事務(wù)是否已經(jīng)被處理完成。該方法不同于以往的以數(shù)據(jù)庫的事務(wù)為標(biāo)準(zhǔn)來衡量這個處理是否完成的方法。在這個過程中沒有回滾的需求,只要數(shù)據(jù)庫寫入成功,消息隊列寫入無論如何都要成功。整個方案的關(guān)鍵是通過頭寫入隊列的寫入和偏移坐標(biāo)的移動這兩個動作,標(biāo)記了一個分布式事務(wù)的范圍。只要這個過程沒有完全做完,就會通過不斷重試頭寫入隊列的方式保證其最終會被完整執(zhí)行。

本發(fā)明實施例通過把隊列技術(shù)應(yīng)用到純遠程過程調(diào)用協(xié)議同步組合的微服務(wù)集群里,提高了遠程過程調(diào)用協(xié)議和異步隊列的業(yè)務(wù)消息的準(zhǔn)確度。

圖2為本發(fā)明另一實施例提供的進程標(biāo)記方法流程圖。在上述實施例的基礎(chǔ)上,本發(fā)明實施例提供的進程標(biāo)記方法具體步驟如下:

步驟s201、標(biāo)記每個遠程過程調(diào)用協(xié)議線程,每個遠程過程調(diào)用協(xié)議線程對應(yīng)一個偏移坐標(biāo),所述偏移坐標(biāo)用于標(biāo)識所述遠程過程調(diào)用協(xié)議線程是否執(zhí)行成功。

步驟s202、若第一遠程過程調(diào)用協(xié)議線程在第二遠程過程調(diào)用協(xié)議線程之前,所述第二遠程過程調(diào)用協(xié)議線程被成功執(zhí)行,所述第一遠程過程調(diào)用協(xié)議線程沒有被執(zhí)行,則不移動所述偏移坐標(biāo)。

步驟s203、若第一遠程過程調(diào)用協(xié)議線程在第二遠程過程調(diào)用協(xié)議線程之前,所述第一遠程過程調(diào)用協(xié)議線程被成功執(zhí)行,所述第二遠程過程調(diào)用協(xié)議線程沒有被執(zhí)行,則移動所述偏移坐標(biāo)。

如果要把重要的業(yè)務(wù)邏輯掛在消息隊列后面。必須要保證消息隊列里的數(shù)據(jù)的完整性,不能有丟失的情況。所以不能是把消息隊列的寫入作為一個旁路的邏輯,而是應(yīng)該把消息隊列放入到主流程。如果消息隊列寫入失敗或者超時,都應(yīng)該直接返回錯誤,而不是允許繼續(xù)執(zhí)行。

本方案中我們將這個本地的隊列封裝到一個高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)的代理作為本地寫入的代理,也就是說引入本地隊列作為兜底。高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)的穩(wěn)定性和延遲時常不能滿足在線服務(wù)的需要。例如,如果要可靠寫入三個副本,高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)需要等待多個中間件的應(yīng)答,這個延遲可能會有比較大的波動。在無法及時寫入的情況,所以我們需要使用本文提出的本地文件兜底的方式充當(dāng)一個緩沖,實際上是通過引入本地文件隊列結(jié)合遠程分布式隊列構(gòu)成一個可用性更高,延遲更低的組合隊列方案。

在沒有頭寫入隊列的時候,遠程過程調(diào)用協(xié)議執(zhí)行過程如下:串行過程,因為沒有保護,所以可能被中斷,不能被確保完整執(zhí)行。引入頭寫入隊列的目的就是讓這個過程變得可靠。

假設(shè)是整個處理過程,對于一個高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)的函數(shù)是獨占的,這也就意味著有多少個遠程過程調(diào)用協(xié)議的并發(fā)處理線程(或者協(xié)程)就需要有多少個對應(yīng)的函數(shù)來跟蹤對應(yīng)線程的處理狀態(tài)。這樣就會變得很不經(jīng)濟,需要大量的高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)函數(shù)。但是如果讓多個遠程過程調(diào)用協(xié)議線程共享一個高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)函數(shù),需要新增加一個管理者單元去協(xié)調(diào)多個遠程過程調(diào)用協(xié)議線程的坐標(biāo)的移動并標(biāo)記事務(wù)的執(zhí)行成功。具體過程如下:

遠程過程調(diào)用協(xié)議線程1,寫入了a1(頭寫入日志),其偏移坐標(biāo)為1。

遠程過程調(diào)用協(xié)議線程2,寫入了a2,其偏移坐標(biāo)為2。

遠程過程調(diào)用協(xié)議線程3,寫入了a3,其偏移坐標(biāo)為3。

遠程過程調(diào)用協(xié)議線程3執(zhí)行完畢,欲把a3標(biāo)記為執(zhí)行成功,移動偏移坐標(biāo)到3。但是因為前面1和2,還沒有執(zhí)行成功,這個時候偏移坐標(biāo)不能被移動。

遠程過程調(diào)用協(xié)議線程1執(zhí)行完畢,欲把a1標(biāo)記為執(zhí)行成功,移動偏移坐標(biāo)到1。因為前面沒有尚未執(zhí)行完成的a,所以這個時候偏移坐標(biāo)被移動到1成功。

遠程過程調(diào)用協(xié)議線程2執(zhí)行完畢,欲把a2標(biāo)記為執(zhí)行成功,移動偏移坐標(biāo)到2。因為后面的3已經(jīng)被執(zhí)行完了,所以偏移坐標(biāo)被直接更新為3。

步驟s204、將遠程過程調(diào)用協(xié)議的請求信息寫入第一序列中。

步驟s205、處理數(shù)據(jù)庫事務(wù)。

步驟s206、如果數(shù)據(jù)庫事務(wù)失敗,則移動所述第一序列的偏移坐標(biāo),所述偏移坐標(biāo)用于標(biāo)識所述請求信息已被處理完畢。

步驟s207、如果數(shù)據(jù)庫事務(wù)成功,則將所述請求信息寫入第二序列中。

步驟s208、如果所述請求信息成功寫入所述第二序列中,則移動所述第一序列的偏移坐標(biāo)。

本發(fā)明實施例通過把隊列技術(shù)應(yīng)用到純遠程過程調(diào)用協(xié)議同步組合的微服務(wù)集群里,提高了遠程過程調(diào)用協(xié)議和異步隊列的業(yè)務(wù)消息的準(zhǔn)確度。

圖3為本發(fā)明實施例提供的進程標(biāo)記裝置的結(jié)構(gòu)圖。本發(fā)明實施例提供的進程標(biāo)記裝置可以執(zhí)行進程標(biāo)記方法實施例提供的處理流程,如圖3所示,進程標(biāo)記裝置30包括:寫入模塊31、處理模塊32、移動模塊33,其中,寫入模塊31用于將遠程過程調(diào)用協(xié)議的請求信息寫入第一序列中;處理模塊32用于處理數(shù)據(jù)庫事務(wù);移動模塊33用于當(dāng)數(shù)據(jù)庫事務(wù)失敗時,移動所述第一序列的偏移坐標(biāo),所述偏移坐標(biāo)用于標(biāo)識所述請求信息已被處理完畢;如果數(shù)據(jù)庫事務(wù)成功,則寫入模塊31將所述請求信息寫入第二序列中;如果所述請求信息成功寫入所述第二序列中,則移動模塊33移動所述第一序列的偏移坐標(biāo)。

本發(fā)明實施例通過把隊列技術(shù)應(yīng)用到純遠程過程調(diào)用協(xié)議同步組合的微服務(wù)集群里,提高了遠程過程調(diào)用協(xié)議和異步隊列的業(yè)務(wù)消息的準(zhǔn)確度。

圖4為本發(fā)明另一實施例提供的進程標(biāo)記裝置的結(jié)構(gòu)圖。在上述實施例的基礎(chǔ)上,如果所述請求信息沒有成功寫入所述第二序列中,則寫入模塊31重新將所述請求信息寫入第二序列中。

進一步的,進程標(biāo)記裝置30還包括:標(biāo)記模塊34,標(biāo)記模塊34用于標(biāo)記每個遠程過程調(diào)用協(xié)議線程,每個遠程過程調(diào)用協(xié)議線程對應(yīng)一個偏移坐標(biāo),所述偏移坐標(biāo)用于標(biāo)識所述遠程過程調(diào)用協(xié)議線程是否執(zhí)行成功。

若第一遠程過程調(diào)用協(xié)議線程在第二遠程過程調(diào)用協(xié)議線程之前,所述第二遠程過程調(diào)用協(xié)議線程被成功執(zhí)行,所述第一遠程過程調(diào)用協(xié)議線程沒有被執(zhí)行,則移動模塊33不移動所述偏移坐標(biāo)。

若第一遠程過程調(diào)用協(xié)議線程在第二遠程過程調(diào)用協(xié)議線程之前,所述第一遠程過程調(diào)用協(xié)議線程被成功執(zhí)行,所述第二遠程過程調(diào)用協(xié)議線程沒有被執(zhí)行,則移動模塊33移動所述偏移坐標(biāo)。

本發(fā)明實施例提供的進程標(biāo)記裝置可以具體用于執(zhí)行上述圖1所提供的方法實施例,具體功能此處不再贅述。

本發(fā)明實施例通過把隊列技術(shù)應(yīng)用到純遠程過程調(diào)用協(xié)議同步組合的微服務(wù)集群里,提高了遠程過程調(diào)用協(xié)議和異步隊列的業(yè)務(wù)消息的準(zhǔn)確度。

綜上所述,本發(fā)明實施例通過把隊列技術(shù)應(yīng)用到純遠程過程調(diào)用協(xié)議同步組合的微服務(wù)集群里,提高了遠程過程調(diào)用協(xié)議和異步隊列的業(yè)務(wù)消息的準(zhǔn)確度。

在本發(fā)明所提供的幾個實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。

另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。

上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(read-onlymemory,rom)、隨機存取存儲器(randomaccessmemory,ram)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

本領(lǐng)域技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。

最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
永嘉县| 安阳县| 大余县| 博客| 田东县| 廉江市| 土默特左旗| 张家川| 长沙县| 进贤县| 宁陵县| 渝中区| 通渭县| 广汉市| 镇原县| 汝州市| 林甸县| 若羌县| 宁南县| 寻甸| 二手房| 山阴县| 定陶县| 武山县| 顺平县| 台湾省| 汪清县| 龙江县| 镶黄旗| 孙吴县| 察哈| 新津县| 德清县| 德惠市| 鞍山市| 盘锦市| 日喀则市| 离岛区| 珠海市| 筠连县| 延安市|