專利名稱:一種消息流控方法和系統的制作方法
技術領域:
本發明涉及通信領域,尤其涉及一種消息流控方法和系統。
背景技術:
在通訊網絡系統中,各個網絡消息處理實體負責加工處理各種各樣的消息,而每條消息可能會經過許多實體的處理或者轉發才能得到完整的處理。每個實體都有消息的收發功能模塊和消息的處理功能模塊,消息收發功能模塊主要負責請求消息的接收、轉發、響應消息的發送等,而具體的業務一般都是由消息處理功能模塊來實現的。
由于消息收發一般都是通過承載在某種物理網絡上的一定通信協議來實現消息發送和接收,比如以太網上的TCP/IP協議,因此,就有可能發生流量過大而導致的消息擁塞和丟失的問題。此外,考慮到消息處理過程中都需要消耗一定的資源,所以網絡中的每個消息處理實體的消息處理能力都是有一定限度的,不可能在一定時間內處理無限多條消息。在這些情況下,對消息發送的流量做必要的控制就成為迫切的要求,這種功能就稱為消息流控,與水庫中用閘門控制水的流量非常相似。
一個簡單的網絡消息處理結構示意如圖1所示。從消息處理實體X發出的請求消息經過消息處理實體X的消息處理功能處理后,經由消息處理實體X的消息收發功能和消息處理實體Y的消息收發功能,到達消息處理實體Y的消息處理功能并由其處理。從消息處理實體Y發出的響應消息的處理過程與請求消息的處理過程相似,只是流向相反。
在現有的系統中,一般的流控過程示意如圖2所示。正常情況下,消息正常發送。消息發送端偵測發送端是否出現消息發送擁塞,當消息發送端發現消息發送出現擁塞時,發送端主動啟動流控,停止發送消息,將需要發送的消息緩存起來。然后在通信部分周期性判斷發送是否處于擁塞狀態,一旦發現消息不再擁塞,則再次啟動消息發送功能,向對端發送消息。
這種方案是一種常見的流控方法,能夠較好的完成消息擁塞情況的流控功能。但是這種方案單純考慮通信流量的擁塞問題,沒有考慮到通信消息業務處理功能的處理能力可能導致的消息擁塞;流控時所有的待發送消息立即停止發送,流量突然減為0,流控結束時流量又突然增大到100%,流量波動較大。
發明內容
為解決現有技術的消息流控方法和系統容易導致較大消息流量波動的問題,本發明提供一種基于比例的消息流控方法和系統以有效克服上述缺陷。
本發明解決上述技術問題所提供的技術方案是提供一種消息流控方法,該方法包括(A)當接收方消息擁塞時,接收方向發送方發送流控請求,提供接收方的消息處理能力;(B)發送方根據接收方的消息處理能力發送適當流量的消息,直到收到下一次流控請求。
其中,步驟(A)中,接收方向發送方發送的流控請求包括流控級別信息。
其中,步驟(A)中,所述的流控級別信息中包括流控比例。
其中,發送方預置有表征消息在處理的過程中耗費系統資源大小的消息當量值,所述的流控比例與發送方的消息當量值結合可獲得接收方的當前消息處理能力。
其中,所述的步驟(B)還包括發送方根據流控請求的流控比例及待發送消息的消息當量值確定該發送周期內發送的消息。
其中,所述的步驟(B)中所述的待發送消息保存在文件中或者內存隊列中或者內存映射表中或者數據庫中。
其中,所述的接收方的消息處理能力為0時,發送方不發送任何消息。
其中,所述的消息當量值是測量得到的。
本發明解決上述技術問題所提供的技術方案是提供一種消息流控系統,包括接收方和發送方,接收方和發送方的每一方包括消息發送功能模塊,用于發送消息;消息處理功能模塊,用于解析和處理消息;當接收方消息擁塞時,接收方向發送方發送流控請求,提供接收方的消息處理能力;發送方根據接收方的消息處理能力發送適當流量的消息,直到收到下一次流控請求。
其中,接收方向發送方發送的流控請求包括流控級別信息。
其中,所述的流控級別信息中包括流控比例。
其中,發送方預置有表征消息在處理的過程中耗費系統資源大小的消息當量值,所述的流控比例與發送方的消息當量值結合可獲得接收方的當前消息處理能力。
其中,所述的消息流控系統還包括保存待發送消息的緩存裝置。
其中,所述緩存裝置是文件或者內存隊列或者內存映射表或者數據庫。
與現有技術相比,本發明的技術方案可實現有效靈活的消息流控機制,避免由于消息處理功能或者實體由于處理能力不足導致的消息擁塞,消息丟失,甚至系統崩潰。一方面,能夠充分而合理地使用消息處理功能的能力,起到削峰填谷的作用。另一方面,能夠按照比例靈活控制消息流量,只要流控級別劃分合理,可以實現近似連續的流量控制。
圖1是一種現有技術的簡單的網絡消息處理結構示意圖。
圖2是一種現有技術的流控過程示意圖。
圖3是本發明的流控過程示意圖。
圖4是消息發送功能模塊部分實現流控的基本原理圖。
具體實施例方式
本發明的技術方案提供一種通用的方法,能夠實現基于比例的,根據系統實體的消息業務處理能力處理消息擁塞的流控機制。通過消息處理功能狀態的主動通知,能夠充分發揮系統實體的業務處理能力,同時又能夠有效控制消息在業務層擁塞的情況。通過分級,將不同的流控級別轉換為流控比例,再給定一個基準的當量消息流量經驗值,從而得到不同級別下的流量,實現精確的消息流控。
下面結合附圖和典型的實施方式對本發明作進一步的介紹,但不作為對本發明的限定。
首先介紹大致的流控過程,然后分別介紹流控過程中的相關概念和技術。
如圖3所示,在消息發送過程中,如果接收方的消息處理功能模塊發現處理消息繁忙,消息得不到及時處理時,則主動向消息接收功能模塊發送處理能力狀況通知,告知當前本部分的處理能力級別。消息接收功能模塊收到通知后,根據給定的映射表計算出流控級別,然后向消息發送功能模塊發送流控請求,請求中攜帶流控級別信息。
消息發送功能模塊收到流控請求后,解析出流控請求中的流控級別,根據流控級別再得到流控比例,用比例乘以基準當量消息就可以得出當前可發送的消息流量,再計算出每個消息發送周期內可發送的消息當量,就可以控制消息發送出口按照此消息當量發送消息。消息發送功能模塊將一直按照這個比例的消息當量發送消息,直到收到下一次流控請求。如果消息處理功能模塊發現處理能力富余,就可以發送處理能力級別高的通知。
消息當量值是表示消息在處理的過程中耗費系統資源大小的一個指標。由于在通信系統中消息經過若干實體和功能模塊的傳遞,最終需要某個實體或者功能模塊做出處理,而不同的消息其處理的對象,方式,內容,數據各不相同,因此其耗費的系統資源也不相同,為了表示這一特征,引入了消息當量值。消息當量值越大,說明此消息耗費的系統資源越大,反之越小。不同消息可能具有不同的消息當量值,該消息當量值一般由實際測試得到,不限于此名稱,應涵蓋滿足耗費消息處理系統資源特征的所有名稱和定義。
表1當量消息表
基準消息當量用來表示在正常情況下,消息處理部分每秒鐘可以處理的消息當量值,表征了一個消息處理系統的處理能力高低。
處理能力級別用來表示當前消息處理功能模塊部分處理能力的高低,數值越大,表示處理能力越高,反之越小。對一個給定的消息處理功能或者實體,在靜態情況下,其消息處理能力應是固定值,但是由于消息流量,系統負荷的變化,在運行過程中,其處理能力又是變化的,因此可以動態確定消息處理功能模塊的消息處理能力級別。當然,該消息處理能力級別包括但不限于本文中列舉出的那些處理能力級別、流控級別。
流控級別用來表示消息流控的程度,流控級別越低,說明需要控制的比例越小,在本方案中,流控級別為1時,不需要進行流控,可按照最大流量發送。
流控比例表示相對于基準消息當量的分值,為1時,表示不需要進行流控,可按照最大流量發送。流控比例與一般的流控方案采用的停止/關閉方式的流控不同,本方案采用了基于處理能力的按照比例流控,充分使用消息處理功能或實體的處理能力。包括但不限于本文中列舉出的那些流控比例。
處理能力高就表明消息在處理部分的擁塞程度小,因而流控級別就低,相應的流控比例就大,可發送的當量消息值就大。
表2給出了示例的處理能力級別和流控級別,流控比例的關系,可作為參考。實際處理中也可以根據實際情況確定不同的處理能力級別和流控級別。
表2處理能力級別、流控級別、流控比例對應表
圖4是消息發送功能模塊部分實現流控的基本原理圖。消息發送功能模塊的所有待發送消息保存在一個緩沖區中,由定時器按照固定的周期從緩沖區中讀取消息出來,每條消息需要查表得到該消息的消息當量值,將本周期內的已發送的消息當量值累加,然后交由發送接口發送出去,當超過了本周期內消息當量值后,退出這個周期的循環,等待下一個定時器周期。定時器每個周期內能讀取的消息當量值由流控比例決定,當流控比例為0時,不發任何消息。
通過本方案可實現有效靈活的消息流控機制,避免由于消息處理功能或者實體由于處理能力不足導致的消息擁塞,消息丟失,甚至系統崩潰。一方面,能夠充分而合理地使用消息處理功能的能力,起到削峰填谷的作用。另一方面,能夠按照比例靈活控制消息流量,只要流控級別劃分合理,可以實現近似連續的流量控制。
當然,對于消息流控級別、流控比例可能會有不同的劃分方式,用不同的數值來表示,但其本質上是一樣的。
對于當量消息值的描述和定義可能會有不同的描述方式,但就耗費消息處理系統資源這個關鍵特征而言,核心含義沒有區別。
對于消息的緩沖機制可能會采取各種可能的方式,比如保存在文件中,保存在內存隊列,內存映射表中,甚至有可能是數據庫,但本質來說都是一種緩存機理,應包含在本方案中。
以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。
權利要求
1.一種消息流控方法,包括(A)當接收方消息擁塞時,接收方向發送方發送流控請求,提供接收方的消息處理能力;(B)發送方根據接收方的消息處理能力發送適當流量的消息,直到收到下一次流控請求。
2.根據權利要求1所述的消息流控方法,其特征是,步驟(A)中,接收方向發送方發送的流控請求包括流控級別信息。
3.根據權利要求2所述的消息流控方法,其特征是,步驟(A)中,所述的流控級別信息中包括流控比例。
4.根據權利要求3所述的消息流控方法,其特征是,發送方預置有表征消息在處理的過程中耗費系統資源大小的消息當量值,所述的流控比例與發送方的消息當量值結合可獲得接收方的當前消息處理能力。
5.根據權利要求1至4中任意一項所述的消息流控方法,其特征是,所述的步驟(B)還包括發送方根據流控請求的流控比例及待發送消息的消息當量值確定該發送周期內發送的消息。
6.根據權利要求5所述的消息流控方法,其特征是,所述的步驟(B)中所述的待發送消息保存在文件中或者內存隊列中或者內存映射表中或者數據庫中。
7.根據權利要求6所述的消息流控方法,其特征是,所述的接收方的消息處理能力為0時,發送方不發送任何消息。
8.根據權利要求6所述的消息流控方法,其特征是,所述的消息當量值是測量得到的。
9.一種消息流控系統,包括接收方和發送方,接收方和發送方的每一方包括消息發送功能模塊,用于發送消息;消息處理功能模塊,用于解析和處理消息;當接收方消息擁塞時,接收方向發送方發送流控請求,提供接收方的消息處理能力;發送方根據接收方的消息處理能力發送適當流量的消息,直到收到下一次流控請求。
10.根據權利要求9所述的消息流控系統,其特征是,接收方向發送方發送的流控請求包括流控級別信息。
11.根據權利要求10所述的消息流控系統,其特征是,所述的流控級別信息中包括流控比例。
12.根據權利要求11所述的消息流控系統,其特征是,發送方預置有表征消息在處理的過程中耗費系統資源大小的消息當量值,所述的流控比例與發送方的消息當量值結合可獲得接收方的當前消息處理能力。
13.根據權利要求8至12中任意一項所述的消息流控系統,其特征是,所述的消息流控系統還包括保存待發送消息的緩存裝置。
14.根據權利要求13所述的消息流控系統,其特征是,所述緩存裝置是文件或者內存隊列或者內存映射表或者數據庫。
全文摘要
本發明涉及通信領域,尤其涉及一種消息流控方法和系統。該方法包括(A)當接收方消息擁塞時,接收方向發送方發送流控請求,提供接收方的消息處理能力;(B)發送方根據接收方的消息處理能力發送適當流量的消息,直到收到下一次流控請求。本發明的技術方案可實現有效靈活的消息流控機制,避免由于消息處理功能或者實體由于處理能力不足導致的消息擁塞,消息丟失,甚至系統崩潰。一方面,能夠充分而合理地使用消息處理功能的能力,起到削峰填谷的作用。另一方面,能夠按照比例靈活控制消息流量,只要流控級別劃分合理,可以實現近似連續的流量控制。
文檔編號H04L12/56GK1921447SQ20061006249
公開日2007年2月28日 申請日期2006年9月6日 優先權日2006年9月6日
發明者陳浩 申請人:華為技術有限公司