SmartRoute零配置零安裝實現分布式負載應用

jopen 8年前發布 | 7K 次閱讀 集群/負載均衡

        隨著應用規模的增長服務則需要擴展集群休部署,在集群化部署過程首先要考慮服務負載處理的問題,在實現應用場中有很多集群化的負載方式,如網絡通訊層面的LVS,HTTP應用協議層面的nginx.然而這些負載都依賴于中心化服務,而SmartRoute的設計理念是去除中心化來實現應用層集群負載處理;而SmartRoute的服務定義和應用調用都不需要明確服務地址和端口,這樣使用服務設計實現更靈活。接下來介紹一下如何通過SmartRoute簡單實現一個服務集群負載應用。

定義節點

       SmartRoute的設計其實服務和client一說,所有實例都是一個節點,所有實例節點即充當服務的同時也是客戶端。在應用中開啟一個節點實例是一件非常簡單的事情。

    Route.DefaultNode.Open();

        只需要一句話就可以打開一個節點,定義者不需要設置服務的地址和端,因為SmartRoute的設計原則是零配置的通訊服務原則。

添加訂閱

        SmartRoute通訊不存在服務和客戶端一說,只有訂閱和向訂閱生產消息。只要在一個節點上添加訂閱,那相關訂閱會自動同步到不同服務的節點上。

mSwitch = new SubscribeSwitch();
            mSwitch.GetServiceSubscribe(Service.REGISTER).RegisterProcess<Register>((o, e) =>
            {
                e.Data.Completed = true;
                e.Data.RegisterTime = DateTime.Now;
                e.Reply(e.Data);
            });


         以上是注冊一個REGISTER的訂閱,并注冊一個處理Register消息的處理過程,并返回相應的處理結果。

生產請求

Register reg = new Register { Name = "henry", EMail = "henryfan@msn.com", PassWord = "123456" };
         reg = mSwitch.Send<Register>(Service.REGISTER, reg);

        請求處理并不需要關心具體的服務通訊地址,只需要明確具體的服務名稱即可以完成,在整個過程中開發者都不需要關心服務通訊方面的東西,只需要關注訂閱服務名即可以進行通訊。

運行結果

        

        只要運行相關程序,那就會自動構建節點進行相關通訊處理。

集群負載處理

        無配置集群是smartroute的主要功能點,不過是訂閱都或生產運行多份就會組成集群負載通訊交互。

       

        只要運行多個訂閱實例,那相關節點就會自動發現,生產者也會自動地把請求負載到不同的訂閱者中。

總結

        smartroute是采用自動發現服務機制進行設計,所以在整個通訊環節中開發者并不需要關心服務的定義和運行。在設計通訊交互過程只需要關注訂閱者的名稱即可,這可以讓開發者在編寫通訊應用的進修變更簡單和靈活。

下載示例


來自: http://my.oschina.net/ikende/blog/602351

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!