亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

消息管理系統(tǒng)及消息管理方法與流程

文檔序號:11960460閱讀:939來源:國知局
消息管理系統(tǒng)及消息管理方法與流程

本發(fā)明涉及一種消息管理系統(tǒng)及消息管理方法。



背景技術:

消息(Messaging)是現(xiàn)在系統(tǒng)間集成的主要方式,在互聯(lián)網公司內主要使用的開源消息服務產品有RabbitMQ和Kafka,這兩者提供的生產者客戶端都能滿足消息發(fā)送給服務器的功能,同時又有不錯的性能,但是他們提供的客戶端只能連接一個服務器集群。當出現(xiàn)以下情況時,沒有簡便的解決方法:1、當集群性能不能滿足時,擴容不方便,需要生產者應用編寫額外的代碼;2、當集群性能波動或宕機時,服務也將受影響?;ヂ?lián)網應用對服務的性能和可用性都有非常高的要求,當性能不足時需要能快速添加服務器以提升整體性能,系統(tǒng)不穩(wěn)定時需要有降級和故障恢復的手段保證穩(wěn)定性。而RabbitMQ和Kafka提供的客戶端實現(xiàn)顯然沒法滿足這些要求。



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

本發(fā)明要解決的技術問題是為了克服現(xiàn)有技術中開源消息服務產品提供的客戶端只能連接一個服務器集群,導致無法滿足要求的缺陷,提供一種消息管理系統(tǒng)及消息管理方法,本發(fā)明提供了一種連接多個不同消息服務器集群,并將其視為一個邏輯集群的消息生產者客戶端實現(xiàn)方法。

本發(fā)明是通過下述技術方案來解決上述技術問題的:

本發(fā)明提供了一種消息管理系統(tǒng),其特點在于,包括消息本地持久化模塊、消息服務器資源封裝模塊以及資源管理模塊;

所述消息本地持久化模塊用于保存待發(fā)送的消息,并設置消息的進入和取出順序;

所述消息服務器資源封裝模塊用于封裝不同類型的消息服務器,并將消息服務器抽象成資源,并為消息服務器提供用于發(fā)送消息的統(tǒng)一對外接口;

所述資源管理模塊用于管理封裝好的資源,按照預設策略選擇消息服務器資源進行使用。

較佳地,所述消息本地持久化模塊用于將消息保存到本地的內存映射文件,并設置消息的進入和取出順序為先進先出。

較佳地,所述資源管理模塊包括資源選擇策略單元,用于為消息服務器集群設置所述預設策略,所述預設策略包括隨機選擇、輪詢選擇、按照最小響應時間進行選擇、按照最小壓力進行選擇、按照哈希策略進行選擇中的至少一種。

較佳地,所述資源管理模塊還包括資源檢測單元,用于對所有的消息服務器資源進行心跳檢測,并根據(jù)心跳檢測結果對消息服務器的資源狀態(tài)進行設置。

較佳地,所述資源檢測單元用于當心跳檢測結果為可用時,將被檢測的消息服務器資源的狀態(tài)標記為可用狀態(tài);當心跳檢測結果為不可用時,將被檢測的消息服務器資源的狀態(tài)標記為不可用狀態(tài)。

較佳地,所述資源檢測單元用于對所有的消息服務器資源定時進行心跳檢測。

本發(fā)明的目的在于還提供了一種消息管理方法,其特點在于,包括以下步驟:

客戶端載入所有已封裝的消息服務器資源,標記所有消息服務器資源的狀態(tài)為可用狀態(tài);

客戶端啟動心跳檢測線程和本地隊列消費線程;

使用客戶端發(fā)送消息,客戶端將消息保存到本地持久化隊列中;

定時對所有的消息服務器資源進行心跳檢測,當心跳檢測結果為可用時,將被檢測的消息服務器資源的狀態(tài)標記為可用狀態(tài);當心跳檢測結果為不可用時,將被檢測的消息服務器資源的狀態(tài)標記為不可用狀態(tài);

本地隊列消費線程獲取持久化的消息,執(zhí)行資源選擇策略獲取可用狀態(tài)的消息服務器資源,然后利用獲取的消息服務器資源執(zhí)行發(fā)送消息的操作。

本發(fā)明的積極進步效果在于:本發(fā)明不需要服務器端支持就可以實現(xiàn)消息服務器集群,并且可以支持同時使用不同類型的消息服務器,只需要通過簡單的代碼或配置就可以提高應用的吞吐量,保證互聯(lián)網應用的穩(wěn)定性。

附圖說明

圖1為本發(fā)明的較佳實施例的消息管理系統(tǒng)的模塊示意圖。

圖2為本發(fā)明的較佳實施例的消息管理方法的流程圖。

具體實施方式

下面通過實施例的方式進一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。

如圖1所示,本發(fā)明的消息管理系統(tǒng)包括消息本地持久化模塊1、消息服務器資源封裝模塊2以及資源管理模塊3。

其中,所述消息本地持久化模塊1用于保存待發(fā)送的消息,并設置消息的進入和取出順序,從而保證消息取出的順序符合消息進入的順序;

具體地,所述消息本地持久化模塊1會將消息保存到本地的內存映射文件,并實現(xiàn)隊列接口,保證消息的進入取出順序為先進先出。

所述消息服務器資源封裝模塊2用于封裝不同類型的消息服務器,并將消息服務器抽象成資源,并為消息服務器提供用于發(fā)送消息的統(tǒng)一對外接口;同時還通過暴露消息路由參數(shù),實現(xiàn)消息路由功能:RabbitMQ的路由使用routing key(一種消息路由),Kafka的路由使用partition key(一種消息路由)。

所述資源管理模塊3用于管理封裝好的資源,按照預設策略選擇消息服務器資源進行使用。所述資源管理模塊3為已封裝的消息服務器資源提供客戶端集群功能,維護消息服務器的狀態(tài)列表,為客戶端請求選擇可用的消息服務器資源。

所述資源管理模塊3包括資源選擇策略單元31和資源檢測單元32,所述資源選擇策略單元31用于為消息服務器集群設置預設策略(即資源選擇策略),所述預設策略包括隨機選擇、輪詢選擇、按照最小響應時間進行選擇、按照最小壓力進行選擇、按照哈希策略進行選擇中的至少一種;所述資源檢測單元32用于對所有的消息服務器資源定時進行心跳檢測,并根據(jù)心跳檢測結果對消息服務器的資源狀態(tài)進行設置,當心跳檢測結果為可用時,將被檢測的消息服務器資源的狀態(tài)標記為可用狀態(tài);當心跳檢測結果為不可用時,將被檢測的消息服務器資源的狀態(tài)標記為不可用狀態(tài)。

如圖2所示,本發(fā)明的消息管理方法利用上述的消息管理系統(tǒng)實現(xiàn),包括以下步驟:

步驟101、客戶端載入所有已封裝的消息服務器資源,標記所有消息服務器資源的狀態(tài)為可用狀態(tài);

步驟102、客戶端啟動心跳檢測線程和本地隊列消費線程;

步驟103、使用客戶端發(fā)送消息,客戶端將消息保存到本地持久化隊列中;

步驟104、定時對所有的消息服務器資源進行心跳檢測,當心跳檢測結果為可用時,將被檢測的消息服務器資源的狀態(tài)標記為可用狀態(tài);當心跳檢測結果為不可用時,將被檢測的消息服務器資源的狀態(tài)標記為不可用狀態(tài);如果心跳檢測結果是未知狀態(tài),則會在某次消息發(fā)送時,嘗試使用被檢測的消息服務器資源;

步驟105、本地隊列消費線程獲取持久化的消息,執(zhí)行資源選擇策略獲取可用狀態(tài)的消息服務器資源,然后利用獲取的消息服務器資源執(zhí)行發(fā)送消息的操作;

發(fā)送成功時,直接返回;發(fā)送失敗時,則將獲取的消息服務器資源標記為不可用狀態(tài),退出消息服務器資源選擇。

雖然以上描述了本發(fā)明的具體實施方式,但是本領域的技術人員應當理解,這些僅是舉例說明,本發(fā)明的保護范圍是由所附權利要求書限定的。本領域的技術人員在不背離本發(fā)明的原理和實質的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護范圍。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1