專利名稱:一種分布式通信系統及其方法
技術領域:
本發明涉及通信領域中分布式的通信系統及其方法,具體地說,是如何將信息由一個通信實體傳送到另一個通信實體的系統及其方法,這里的通信實體是指一個可以接收消息和發送消息的程序實例,通信實體的位置不受限制,可以位于分布式系統中的任意位置。
在現有技術中,分布式通信有兩類常用的方案,一類是使用遠程過程調用機制(RPC),另一類是使用網絡應用程序接口。RPC處理過程的調用在本質上是同步的,這就意味著提出請求的應用程序在請求接收程序完成該過程之前必須等待,并且使用RPC的應用程序常常必須理解網絡傳輸的一些概念,并負責定位滿足請求的接收者。網絡應用程序接口(APIs)雖然支持同步通信和異步通信,但它是建立在傳統進程間通信的系統調用基礎上的,而這些調用在本質上只提供同步實現方式,同時網絡APIs并沒有提供編碼數據設備以使多個平臺上有不同數據表示的應用程序能夠理解這些數據,使用網絡APIs常常要求創建和使用額外的軟件,這些軟件通常是標準的底層的軟件,諸如處理不同平臺上數據表示差異的軟件。另外,用戶還要為打包和傳送請求以及解包和把請求傳遞到例程而編寫代碼,可能還要作大量的緩沖區操作并注意不同平臺的細小差別。現有的通信機制存在著同步和異步兩種形式,同步通信是指一個通信實體向另一個通信實體發送消息,然后等待回答;異步通信是指一個通信實體向另一個通信實體發送消息,然后繼續工作,期待過些時候會有應答。從以上分析可以看出,上述兩種方案只支持同步通信方式。因此,缺乏對異步通信的全面支持和應用程序過多的涉及底層通信是目前分布式處理系統中存在的主要問題。
本發明的目的是提供一種能實現通用的、完備的、與操作平臺無關的、對通信實體透明的且對異步通信全面支持的分布式處理系統及其方法。
為了實現上述目的,本發明提出的分布式處理系統包括五層結構,從下到上依次分為
操作系統層該層提供系統的操作平臺;虛擬操作系統層用于封裝各操作系統的系統調用,為上層提供用于通信和其他相關的服務;進程間通信層利用虛擬操作系統層提供的各種服務,實現有限狀態機所屬進程/機器之間的消息傳送;有限狀態機實現層通過調用虛擬操作系統的服務,實現有限狀態機的消息接受和分發調用,向上一層的應用程序層提供統一的接口與服務,并提供上層實現模板;應用程序層根據有限狀態機模板填寫自己的應用代碼來實現具體的應用功能。
所述的分布式處理系統中,是將通信實體當作有限狀態機,每個有限狀態機分為系統執行部分和用戶執行部分。系統執行部分負責處理消息的接收和分發,維護信箱;用戶執行部分負責填寫消息分配表和消息處理函數。
如上所述的分布式處理系統中,實現有限狀態機之間的消息傳送,需要對每個有限狀態機進行編址,包括物理地址和名字地址的編址。
如上所述的分布式處理系統中,所述的物理地址是在每一個有限狀態機生成時由系統自動分配的,該物理地址分為三個組成部分機器地址+進程地址+有限狀態機地址。
如上所述的分布式處理系統中,所述的名字地址是每個有限狀態機向系統自行注冊的,每個名字地址對應著自己的物理地址。
基于所述的分布式處理系統的通信方法是這樣完成的1、當有限狀態機之間發送消息時,發送方有限狀態機調用通信底冊提供的通信方法,將消息發送后立即返回;2、通信底層查看消息的接收方有限狀態機的地址,進行判斷;3、通信底層判斷結束后,發送消息;4、當接收方有限狀態機的信箱中接收到消息后,其系統執行部分開始運行;5、系統執行部分運行結束后,轉入用戶執行部分;6、該有限狀態機的用戶執行部分則對接收到的消息進行處理;7、處理結束后,轉入系統執行部分;8、系統執行部分根據處理后的信息驅動應用程序層完成具體的應用功能。
如上所述的分布式處理系統的通信方法,其特征在于,所述通信底層判斷結束后,發送消息包括(1)如果接收方有限狀態機和發送方有限狀態機在同一進程,則直接將消息投放到接收方有限狀態機的信箱中;(2)如果不在同一進程內部,通信底層將消息發往發送方有限狀態機的本地郵局;(3)發送方有限狀態機的本地郵局收到消息后,進一步進行判斷;(4)如果接收方有限狀態機與發送方有限狀態機在同一機器內部,本地郵局將消息發往接收方有限狀態機本地郵局,由接收方本地郵局發送到接收方有限狀態機的信箱中;(5)如果兩者不在同一機器內部,本地郵局將消息發往本機器全局郵局,該全局郵局在將消息發送到接收方有限狀態機所在機器的全局郵局,接收到消息的全局郵局通過接收方所在地的本地郵局將消息放入接收方有限狀態機的信箱中。
如上所述的分布式處理系統的通信方法,所述的有限狀態機的系統執行部分的運行主要包括以下步驟(1)從信箱中取出收到的消息;(2)根據消息分配表,調用用戶填寫的處理函數;(3)將接收到的消息傳入用戶處理函數。下面結合附圖和實施例對本發明作進一步的詳細說明。
圖1為本發明提出的分布式通信系統的結構。圖2為有限狀態機的具體結構。圖3為本發明中所給出的有限狀態機的通信實例。
圖1是本發明所描述的基于有限狀態機的分布式處理系統。該系統的最底層為操作系統層,向不同的應用平臺提供操作,根據不同的硬件和軟件的具體設置而有所不同;其上層為虛擬操作系統層,該層提供進/線程管理、信號量管理、內存管理、時鐘管理、異常處理等等機制;再上層為進程間通信層,負責進程間/機器間的消息傳送;再上層為有限狀態機的實現層,它為應用程序提供所有應用程序接口以及對信箱的維護,并負責消息的分發;最上層為應用程序層,它根據底層提供的各種服務和編程約定實現所有應用功能。
本發明將通信實體當作有限狀態機,其結構如圖2所示。每個有限狀態機包括系統執行部分和用戶執行部分,系統執行部分負責處理消息的接收和分發,維護信箱;用戶執行部分負責填寫消息分配表和消息處理函數。其中,系統執行部分維護一個信箱和一個狀態相關的消息分發表,每一個消息分發表項是一個四元組<當前狀態,消息/事件,消息處理函數,下一狀態>,該四元組表示有限狀態機在當前狀態,收到一個消息/事件,會調用相應的消息處理函數進行處理,然后遷移到下一狀態。
進行消息交互的有限狀態機之間的相對物理位置有以下幾種情況(1)相同進程內部通信,(2)相同機器不同進程之間通信,(3)不同機器不同進程之間通信。每個進程內有一個通信代理,稱為本地郵局,本地郵局知道如何找到本機內所有進程;每個機器內有一個通信代理,稱為全局郵局,全局郵局知道如何找到系統中所有機器。有限狀態機在發送消息時,只需將消息發送出去即可返回,實現異步通信,不需了解消息的具體發送過程。
下面結合圖3就這三種情況分別描述圖3中的A和B分別表示一個機器,1和2是機器A中若干進程中的兩個不同進程,3表示機器B中若干進程中的一個進程。
對于相同進程內部通信,例如進程1中有限狀態機101和102之間的通信,發送方101直接將消息投放到接收方102的信箱中即可完成;對于相同機器不同進程,例如進程1中有限狀態機101和進程2中有限狀態機201之間的通信,發送方101將消息發送到本進程內的本地郵局103信箱中,由本地郵局103負責將消息進一步通過接收方所在的本地郵局203發送到接收方201,對于發送方201實現異步通信;對于不同機器不同進程的有限狀態機之間的通信,例如機器A的進程1中的有限狀態機101與機器B的進程3中有限狀態機301之間的通信,有限狀態機101調用通信底層提供的通信方法,將消息發送出去后立即返回,通信底層查看消息的接收地址,發現接收方與發送方不在同一進程內部,就將消息發送到本地郵局103,本地郵局103查看接收方不在本機器內,即將消息發往全局郵局4,全局郵局4根據接收方地址,將消息發往接收方所在機器的全局郵局5,該全局郵局5再將消息發送至接收方所在進程的本地郵局302,該本地郵局302最終將消息放入接收方301的信箱中。
由有限狀態機系統執行部分接收并調度處理函數,到此完成一個跨機器的通信過程,如果兩臺機器的操作系統不同,該通信過程仍可完成,并且對于上層通信實體來說是透明的。
本發明中提出的識別有限狀態機的位置的編碼方法中,物理地址是在通信實體生成時由系統自動分配的,每一個有限狀態機在整個通信系統中擁有一個唯一標識自身位置的物理地址。而名字地址是有限狀態機向系統自行注冊的,其唯一性是由系統保證的,對于相同的名字地址,本方法采用時間優先的原則,先注冊先使用。兩種方法同時采用,即使有限狀態機的物理地址發生變化,系統也可以使用名字地址正確投遞信息。名字地址的使用可以更好的屏蔽機器和進程等物理概念。
本發明提出的分布式通信系統及其方法,可以為應用程序提供完全透明的通信服務,應用程序無須關心通信的具體細節,無須考慮傳入消息的接收與分發調度;可以實現充分的異步通信,應用程序可以實現并發操作;基于名字的通信機制可以為應用程序提供更為便捷的通訊機制;對于有限狀態機的引用和虛擬操作系統的服務可以使本方法的使用更加通用,不受應用平臺軟硬件種類的限制,完全可以工作在異種平臺環境中。
權利要求
1.一種分布式通信系統,其特征在于該系統包括五個層次,從下往上依次為操作系統層提供系統的操作平臺;虛擬操作系統層封裝各操作系統的系統調用,為上層提供用于通信的接口和其他相關的服務;進程間通信層利用虛擬操作系統層提供的各種服務,實現有限狀態機所屬進程/機器之間的消息傳送;有限狀態機實現層通過調用虛擬操作系統的服務,實現有限狀態機的消息接受和分發調用,向上一層的應用程序層提供統一的接口與服務,并提供上層實現模板;應用程序層該層根據有限狀態機提供的模板填寫自己的應用代碼來實現具體的應用功能。
2.如權利要求1所述的一種分布式通信系統,其特征在于所述的有限狀態機實現層,是將通信實體當作有限狀態機;每個有限狀態機分為系統執行部分和用戶執行部分,用戶執行部分完成消息分發表的填寫和消息處理函數的編寫,而消息的接收和消息的分發完全由系統執行部分完成。
3.如權利要求2所述的一種分布式通信系統,其特征在于所述有限狀態機的系統執行部分,維護一個狀態相關的消息分發表,每一個消息分發表項是一個四元組<當前狀態,消息/事件,消息處理函數,下一狀態>,該四元組表示有限狀態機在當前狀態,收到一個消息/事件,會調用相應的消息處理函數進行處理,然后遷移到下一狀態。
4.如權利要求1所述的一種分布式通信系統,其特征在于所述的有限狀態機的實現層,需要對每個有限狀態機進行編址,包括物理地址和名字地址的編址。
5.如權利要求4所述的一種分布式通信系統,其特征在于所述的物理地址是在每一個有限狀態機生成時由系統自動分配的,該物理地址包括三個組成部分機器地址+進程地址+有限狀態機地址。
6.如權利要求4所述的一種分布式通信系統,其特征在于所述的名字地址是每個有限狀態機自行向系統注冊的,每個名字地址對應著自己的物理地址。
7.如權利要求6所述的一種分布式通信系統,其特征在于所述的名字地址注冊時,對于相同的名字地址,系統采用時間優先的原則,先注冊先使用。
8.一種通過權利要求1所述的分布式處理系統實現的通信方法,其特征在于它包括以下的步驟(1)當有限狀態機之間發送消息時,發送方有限狀態機調用通信底層提供的通信方法,將消息發送后立即返回;(2)通信底層查看消息的接收方有限狀態機的地址,進行判斷;(3)通信底層判斷結束后,發送消息;(4)當接收方有限狀態機的信箱中接收到消息后,其系統執行部分開始運行;(5)系統執行部分運行結束后,轉入用戶執行部分;(6)該有限狀態機的用戶執行部分則對接收到的消息進行處理;(7)處理結束后,轉入系統執行部分;(8)系統執行部分根據處理后的消息,驅動應用程序層完成具體的應用功能。
9.如權利要求8所述的通信方法,其特征在于所述步驟(3)中的通信底層判斷結束后,發送消息包括以下步驟(1)如果接收方有限狀態機和發送方有限狀態機在同一進程,則直接將消息投放到接收方有限狀態機的信箱中;(2)如果不在同一進程內部,通信底層將消息發往發送方有限狀態機的本地郵局;(3)發送方有限狀態機的本地郵局收到消息后,進一步進行判斷;(4)如果接收方有限狀態機與發送方有限狀態機在同一機器內部,本地郵局將消息發往接收方有限狀態機本地郵局,由接收方本地郵局發送到接收方有限狀態機的信箱中;(5)如果兩者不在同一機器內部,本地郵局將消息發往本機器全局郵局,該全局郵局在將消息發送到接收方有限狀態機所在機器的全局郵局,接收到消息的全局郵局通過接收方所在地的本地郵局將消息放入接收方有限狀態機的信箱中。
10.如權利要求8所述的通信方法,其特征在于所述步驟(4)中的有限狀態機的系統執行部分的運行包括以下步驟(1)從信箱中取出收到的消息;(2)根據消息分配表,調用用戶填寫的處理函數;(3)將接收到的消息傳入用戶處理函數。
全文摘要
本發明公開了一種分布式通信系統及其方法。系統包括五層結構,操作系統層、虛擬操作系統層、進程間通信層、有限狀態機實現層和應用程序層。本發明中,將通信實體當作有限狀態機,有限狀態機之間的通信采用了郵政系統的通信路由方式。有限狀態機的位置識別采用物理地址和名字地址的編址方式。本發明可以為應用程序提供完全透明的、異步的通信機制,并且不受應用平臺軟硬件種類的限制,完全可以工作在異種平臺環境中。
文檔編號H04L29/02GK1325217SQ0011987
公開日2001年12月5日 申請日期2000年8月29日 優先權日2000年8月29日
發明者譚震, 林曉東, 余冰 申請人:深圳市中興通訊股份有限公司