欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

ESFramework介紹之(33)―― AS與FS通信實現及

系統 1708 0
(本文部分內容只適合ESFramework V0.3+)

ESFramework介紹之(14)-- AS與FS通信方案 一文中,我們講到了AS與FS之間基本的通信方案,并且采取了一些策略來保證AS與FS之間的穩定通信。本文我們將給出AS與FS通信的兩種實現,即基于Tcp連接池的通信實現和基于Remoting的通信實現。

我們已經知道,AS與FS之間的通信分為兩類,一類是非功能通信,一類是功能通信。非功能通信指的是FS向AS注冊、注銷等通信,這種通信僅僅是FS主動聯系AS,以表明FS自己的狀態。功能通信是指AS將功能請求轉發給FS處理,這可以通過Tcp連接池或Remoting的方式進行。在 ESFramework介紹之(14)-- AS與FS通信方案 一文中,我們主要描述了非功能通信的策略,這里我們將描述功能通信的兩種實現。

要能比較全面的說清楚AS與FS之間的功能通信,我不得不從一個更大的視野來討論問題,其中會涉及到對眾多FS的管理、調度、狀態顯示等問題。讓我們先從基于Tcp連接池的通信開始。先給出個與該實現相關的組件關系圖先:
ESFramework介紹之(33)―― AS與FS通信實現及相關
我來解釋一下各個組件的作用、職責,以及它們之間的關系。
(1)IAsRemotingService_4Fs,AS通過該接口發布遠程服務給FS,FS可以通過該接口來向AS表明自己的狀態,如注冊、啟動、停止、注銷、發布FS自己的性能數據等。
(2)IFsManager ,該組件實現了IAsRemotingService_4Fs接口,它對所有在線的FS進行管理和狀態監控。IFsManager 實現了IServerScheduler接口,它能夠在多個FS之間進行調度,從而實現負載均衡。因為IFsManager 知道每個FS的實時性能數據,所以它可以做到這一點。
(3)IFsDisplayer ,用于在UI上顯示每個FS的相關數據,比如FS的編號、FS的名稱、FS的服務列表、性能數據(Cpu利用率、Memory的利用率)等。
(4)ITcpPoolsManager,這是基于Tcp連接池實現AS與FS之間通信的核心組件,它用于管理一個應用服務器和多個功能服務器之間的所有TCP連接池。它借助IServerScheduler從眾多的FS中選取一個最適合并且負載最小的FS來處理功能請求。
(5)TPBasedDataDealer,基于Tcp連接池的處理器,它是一種偽處理器(FakeDataDealer),即它自己并不真正的處理消息,而是將消息轉交給ITcpPoolsManager處理。相關更多內容可參考這里: ESFramework介紹之(12)―― 基于Tcp連接池的消息處理器
(6)ITcpPool接口,在 ESFramework介紹之(11)-- Tcp連接池管理器 中我們已經知道,ITcpPool接口可以使我們將一組Tcp連接池當作一個連接池來看待。
(8)Bridge,這是FsManager_TcpPoolsManager_Bridge橋接組件,它用于連接IFsManager和ITcpPoolsManager,主要目的是將IFsManager的FsAdded事件和FsRemoved事件鏈接到ITcpPoolsManager對應的方法上,這樣ITcpPoolsManager就可以動態的添加/移除對應的Tcp連接池了。

理解了上面的組件關系圖,然后來組裝ESFramework中對應的組件以形成基于Tcp連接池的AS與FS通信就非常的簡單了。下面我們來看看基于Remoting的AS與FS通信的實現,這個實現在ESFramework V0.3+中才會提供。
還是先給出組件關系圖:
ESFramework介紹之(33)―― AS與FS通信實現及相關
可以看到,大部分組件和基于Tcp連接池的實現是一樣的,這樣可以最大化組件的復用(要達到這樣的效果,需要不斷地重構組件),下面介紹一下不一樣的那些組件的作用。
(1)IRemoteHandleManager,用于管理所有的(FS)遠程句柄,因為要與多個FS進行遠程通信,所以需要將這些遠程句柄管理起來,并且IRemoteHandleManager同樣借助了IServerScheduler從眾多的FS中選取一個最適合并且負載最小的FS來以Remoting的方式處理功能請求。
(2)Bridge,這個橋接組件是FsManager_RemoteHandleManager_Bridge,它的作用與FsManager_TcpPoolsManager_Bridge橋接組件相同。它將IFsManager的FsAdded事件和FsRemoved事件鏈接到IRemoteHandleManager對應的方法上,這樣IRemoteHandleManager就可以動態的添加/移除對應的FS遠程句柄了。
(3)RemotingBasedDataDealer ,基于Remoting的處理器,通過IRemoteHandleManager將所有的請求轉交給遠程句柄處理。
(4)INakeDispatcher,這是ESFramework最內部的消息分派器組件,當消息到達INakeDispatcher內部,就不再與Spy或Hook相關。
(5)IFsRemotingService_4As,這是FS發布的遠程服務組件,該組件將所有來自AS的請求都交給INakeDispatcher分派處理。

我們看到,基于Tcp連接池的實現和基于Remoting的實現的原理基本是一致的,那么何時該使用Tcp連接池的實現,何時又使用基于Remoting的實現了?答案取決于多個方面,比如
(1)如果AS與FS都基于ESFramework創建,并且位于同一局域網內,使用Tcp連接池效率可能更高。因為Remoting底層會對NetMessage進行列集/散集,這會折損效率(即使其底層仍然使用Tcp)。
(2)如果AS與FS分布于廣域網中,并且需要穿越多個防火墻,那么直接使用Tcp連接池可能不可行,因為有的防火墻可能關閉了我們服務的Tcp端口。這時可以考慮使用Remoting的方式,因為Remoting可以基于Http進行。
(3)又如果我們的FS為了獲取更高的效率,全部采用C++構建,那么無法提供Remoting,這時就只有采用Tcp連接池了。
也許,還有很多其它的情景和對應的選擇,你可以自己去思考。

如果兩種方式都可行,那么我們可以隨意的選擇一種,在這兩種實現之間進行切換僅僅是個配置的問題(比如借助Spring.net)。


上篇文章: ESFramework介紹之(32)―― Tcp客戶端核心組件關系圖

轉到: ESFramework 可復用的通信框架(序)


ESFramework介紹之(33)―― AS與FS通信實現及相關


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品一区二区三区免费视频 | 特级做a爰片毛片免费看 | 成年人免费网站在线观看 | 亚洲一区二区三区免费看 | 日本一级淫片免费看 | 夜夜撸夜夜爽 | 波多野结衣办公室33分jian情 | 91视频无限看 | 欧美一区二区三区成人精品 | 91丁香亚洲综合社区 | 日韩欧美国产精品第一页不卡 | 91精品一区二区三区久久久久久 | 久本草在线中文字幕亚洲欧美 | 中文字幕一区二区三区四区 | 午夜精品一区 | 亚洲精品美女久久777777 | 亚洲欧洲精品一区二区 | 午夜色视频在线观看 | 日日爽天天操 | 久久com | 日韩精品网站 | 免费国产小视频在线观看 | 黄免费在线观看 | 九色com| 欧美一区二区免费电影 | 偷拍做爰吃奶视频免费看 | 午夜免费| 视频一区二区三区四区五区 | 精品在线视频一区 | 色老头久久网 | 色网站视频 | 成人影院欧美大片免费看 | 国产福利福利视频 | 日韩成人免费在线视频 | 亚洲精品午夜电影 | 亚洲精品电影在线观看 | 亚洲午夜精品视频 | 国产日韩精品一区 | 国产精品成人免费观看 | 亚洲精品中文字幕在线观看 | 久久精品视频在线看99 |