[發(fā)明專利]一種分布式系統(tǒng)中消息的傳遞方法有效
| 申請?zhí)枺?/td> | 201110328318.9 | 申請日: | 2011-10-25 |
| 公開(公告)號: | CN102368700A | 公開(公告)日: | 2012-03-07 |
| 發(fā)明(設計)人: | 張攀勇;袁重橋;趙力;邵宗有;劉新春;苗艷超;王勇 | 申請(專利權)人: | 曙光信息產(chǎn)業(yè)(北京)有限公司 |
| 主分類號: | H04L1/18 | 分類號: | H04L1/18;H04L1/16;H04L12/24 |
| 代理公司: | 北京安博達知識產(chǎn)權代理有限公司 11271 | 代理人: | 徐國文 |
| 地址: | 100084 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 分布式 系統(tǒng) 消息 傳遞 方法 | ||
技術領域
本發(fā)明涉及并行文件系統(tǒng)的通信系統(tǒng),特別涉及一種分布式系統(tǒng)中的高可靠消息傳輸領域。
背景技術
分布式系統(tǒng)中通信系統(tǒng)作為系統(tǒng)各節(jié)點之間的通信基礎,具有重要的意義。由于分布式系統(tǒng)中的節(jié)點和網(wǎng)絡設備相互獨立,在任意時間均可能出現(xiàn)故障,同時節(jié)點之間的消息傳輸路徑涉及到多個部分,包括通信系統(tǒng)的消息緩沖區(qū),系統(tǒng)的消息發(fā)送緩沖區(qū),網(wǎng)卡和交換機的硬件緩沖,系統(tǒng)的接收緩沖區(qū),通信系統(tǒng)的接收緩沖區(qū),在系統(tǒng)出現(xiàn)故障時,無法確定通信消息位于何處。
在一次分布式系統(tǒng)的一次通信中,分為通信發(fā)起方和通信接收方,通信發(fā)起方發(fā)起通信操作,通信接收方接收消息并針對消息內(nèi)容進行處理,并發(fā)送處理完成消息給通信發(fā)起方,通知通信發(fā)起方處理完成。通信消息從消息發(fā)送方發(fā)送到消息接收方需要經(jīng)過消息發(fā)送方,通信層發(fā)送緩沖,網(wǎng)卡硬件緩沖,交換機硬件輸入、輸出緩沖,網(wǎng)卡硬件緩沖,通信層接收緩沖,最終到達消息接收方。通信發(fā)起方發(fā)送的通信操作和通信接收方應答的處理完成消息都需要經(jīng)過上述通信路徑。當系統(tǒng)出現(xiàn)故障的時候,通信消息可能存在于任意一個地方,可能存在于發(fā)送路徑中,接收方緩沖區(qū)中,或者已經(jīng)被接收方處理,但是沒有完成處理應答。也可能是接收方接收并處理完成,應答消息丟失,應答消息處于通信層緩沖區(qū),網(wǎng)卡或者交換機的硬件緩沖區(qū)中。在系統(tǒng)出現(xiàn)故障之后,一般的可靠性處理方式為進行通信重建,然后重新發(fā)送未正確處理的消息。但對于不能重復執(zhí)行的通信來說,由于通信請求方無法獲知通信消息是否被通信服務方所接收并執(zhí)行,如果此時通信發(fā)起方再次發(fā)送相同的通信消息,會導致通信接收方出現(xiàn)未知的系統(tǒng)狀態(tài),從而使得分布式系統(tǒng)出現(xiàn)不一致的狀態(tài)。傳統(tǒng)的解決方法為在應用層上處理,使得應用層的通信變得復雜。
同時,消息傳輸?shù)捻樞蛐栽诜植际较到y(tǒng)中非常重要,為了保證通信的順序性,一般在應用層實現(xiàn)保證通信的序。當網(wǎng)絡出現(xiàn)故障之后,維持該順序性變得非常復雜,需要提供一種可靠的網(wǎng)絡層,提供可靠的消息傳輸順序保障。
另一方面,由于節(jié)點內(nèi)部的傳輸通路可能存在故障,即便網(wǎng)絡上傳輸保證了可靠性,也不能保證應用一級的端到端的數(shù)據(jù)一致性,需要一種通信過程中內(nèi)存到內(nèi)存級的可靠消息傳輸機制。在這種背景下,本專利提出了一種高可靠的消息傳輸方法,保證了應用層的消息傳輸接口簡潔性的前提下,提供了內(nèi)存到內(nèi)存級可靠的消息傳輸。
發(fā)明內(nèi)容
本發(fā)明的目的是解決分布式系統(tǒng)中消息傳輸?shù)目煽啃詥栴},提供了一種分布式系統(tǒng)中高可靠的消息傳輸方法。
為了解決在系統(tǒng)故障的時候,通信發(fā)起方對一次通信操作的狀態(tài)未知的問題,本發(fā)明提出了一種基于端到端的差錯控制機制和校驗機制,能夠在故障的時候確定消息的狀態(tài),并保證網(wǎng)絡傳輸消息的順序性和正確性。
一種分布式系統(tǒng)中消息的傳遞方法,
在通信通路的兩端分別維護一個消息序號和預期消息序列號,在連接第一次建立的時候,通信雙方首先通過控制消息同步消息序號為0,同時通信雙方同步預期消息序列號為0;
對于每次發(fā)送的消息,首先獲取連接的消息序號,將該消息序號填充到發(fā)送消息的控制消息頭部中,發(fā)送消息成功后,更新發(fā)送消息的發(fā)送時間,將該消息放入待確認發(fā)送消息隊列中,等待來自接收方的確認;
接收方在接收到消息之后,檢查消息頭上的消息序號是否與當前的預期消息序號匹配;
發(fā)送方在接收到接收方返回的確認消息,根據(jù)消息號將待發(fā)送隊列上消息號小于等于該消息號的消息,確認發(fā)送完成,通知上層發(fā)送完成,同時更新待發(fā)送方的待確認消息號為確認消息號;如果確認消息號在待發(fā)送隊列上未找到待確認消息,則認為該消息已被確認,直接丟棄該確認消息;
發(fā)送方的待發(fā)送隊列中的請求如果在固定時間中沒有被應答,則認為發(fā)送消息丟失,重新發(fā)送該消息,等待應答消息;
在出現(xiàn)故障之后,發(fā)送方和接收方協(xié)商待確認消息號以及發(fā)送消息號,如果發(fā)現(xiàn)接收方的待確認消息號大于發(fā)送方的待確認消息號,則表示存在已經(jīng)接收,但是發(fā)送方未確認的消息號,發(fā)送方同步待確認消息號為接收方的待確認消息號,同時將待發(fā)送消息隊列中消息號在接收方預期消息號和發(fā)送方發(fā)送消息號-1之間的消息進行重發(fā)。
優(yōu)選的,在檢查消息頭上的消息序號是否與當前的預期消息序號匹配時,
如果消息序號小于預期消息序號,則認為該消息已經(jīng)發(fā)送完成,丟棄收到的消息,并向發(fā)送方返回確認消息,確認號為當前預期消息序號-1;
如果消息序號大于預期消息序號,則將該消息插入待接收消息隊列中,等待預期消息;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于曙光信息產(chǎn)業(yè)(北京)有限公司,未經(jīng)曙光信息產(chǎn)業(yè)(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110328318.9/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





