青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

twzheng's cppblog

『站在風(fēng)口浪尖緊握住鼠標(biāo)旋轉(zhuǎn)!』 http://www.cnblogs.com/twzheng

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  136 隨筆 :: 78 文章 :: 353 評論 :: 0 Trackbacks
[源] http://zhuweisky.cnblogs.com/archive/2006/03/16/351426.html

上文已經(jīng)講到,Tcp連接池管理器為我們的應(yīng)用進(jìn)行了很多復(fù)雜的管理,比如功能服務(wù)器的調(diào)度(實現(xiàn)FS的負(fù)載均衡)、連接池的動態(tài)添加/移除、控制每個連接池的相關(guān)參數(shù)在UI上的顯示等,并且連接池管理器與單個連接池?fù)碛幸粯拥慕涌?/span>ITcpPool。我們先回顧一下這個接口:
 
 1     public interface ITcpPool
 2     {
 3         RentStreamResult RentTcpStream(int poolTypeKey ,int serviceKey ,out NetworkStream stream ,out int serverID) ;//poolTypeKey表示某個城市,serviceKey表示某項服務(wù)
 4         void GiveBackTcpStream(int streamHashCode ,int serverID) ;//將tcp連接規(guī)還給連接池
 5         void SetStreamDamaged(int streamHashCode ,int serverID) ;//poolKey如果不易保存,則此處簡單的傳-1即可    
 6 
 7         event CallBackCountChanged     ActiveConnectionCountChanged ;     
 8         event CallBackPoolStateChanged PoolStateChanged ;        
 9     }
10 

    RentTcpStream方法中的serviceKey參數(shù)反映了這樣一個事實:與一個AS相連的多個FS中,每個FS加載的功能插件可以是不一樣的。



    比如,上圖中的
3FS中只有FS1加載了前面介紹的“天氣預(yù)測服務(wù)”插件,那么當(dāng)一個“天氣預(yù)測服務(wù)”請求到達(dá)AS時,AS就只能從與FS1之間的連接池中Rent一個Tcp連接,而不是從FS2FS3RentTcpStream方法的out參數(shù)serverID表明了這條連接是指向哪個FS的。

    接下來考慮這樣一個問題,當(dāng)一個請求到來,這個請求可以被FS1FS2FS3處理,那么ITcpPoolsManager到底返回哪個連接池中的連接了?答案是負(fù)載最小的那個FS上的連接。
    這是怎么做到的了?其實很簡單。每個FS都定時(比如一秒一次)地把自己的負(fù)載(CPU利用率和內(nèi)存利用率)通知給AS,通知給AS的方式可以有多種,比如.Net RemotingESFramework中有一個稱為連接池調(diào)度器ITcpPoolScheduler的東東,它記錄了每個FS實時的負(fù)載。這樣當(dāng)一個請求到來時,連接池管理器ITcpPoolsManager會要求連接池調(diào)度器從眾多的FS中選出一個“滿足條件”且負(fù)載最小的FS。這里的“滿足條件”主要指的是對應(yīng)的FS上有能處理該請求的功能插件。實現(xiàn)這種調(diào)度需要的支持的各個相互協(xié)作的組件的聯(lián)系圖大致如下:


      
    圖中IServerPerformanceMonitor是用于監(jiān)控本地服務(wù)器性能的組件,它可以定時發(fā)布本服務(wù)器的性能數(shù)據(jù)(主要是CPU利用率和內(nèi)存利用率),其定義如下:
 1     public interface IServerPerformanceMonitor 
 2     {        
 3         void Start() ;
 4         void Stop() ;        
 5 
 6         int RefreshSpanSecs{get ;set ;}
 7 
 8         event CBackServerPerformance ServerPerformanceDataRefreshed ;
 9     } 
11 
12     public delegate void CBackServerPerformance(ServerPerformance performance) ;
 
13     public class ServerPerformance
14     {        
15         public float  CpuUsagePercent ;
16         public float  MemoryUsagePercent ;
17     }    
 

連接池調(diào)度器ITcpPoolScheduler的定義如下:

 1     public interface ITcpPoolScheduler
 2     {
 3         //以下方法屬性僅僅由多連接池管理者調(diào)用
 4         int GetNextTcpPool(int poolTypeKey) ; //返回的是某連接池的服務(wù)端點的serverID ,如果沒有可用的返回-1
 5         int GetNextTcpPool(int poolTypeKey ,int serviceKey) ; 
 6 
 7         void Initialize() ;
 8         void Dispose() ;//還原到未初始化的狀態(tài)
 9         void SetServerState(int serverID ,bool activated) ;        
10         void AddServer(int serverID) ;
11         void RemoveServer(int serverID) ;
12 
13 
14         //以下方法屬性由外部指定或調(diào)用
15         void SetPerformance(int serverID ,float cpuUsage ,float memUsage) ;        
16         ITcpPoolHelper    TcpPoolHelper{set ;}
17     }

    為了使負(fù)載均衡的效果更好,ITcpPoolScheduler可以實現(xiàn)的非常復(fù)雜,比如進(jìn)行歷史記錄統(tǒng)計、分析、預(yù)測等。ESFramework給出了默認(rèn)實現(xiàn)TcpPoolScheduler

    在組件聯(lián)系圖中還有一個IPoolEndPointsDisplayer組件,它用于在UI上顯示每個功能服務(wù)器的詳細(xì)信息和性能數(shù)據(jù)。

1     public interface IPoolEndPointsDisplayer
2     {
3         void RegisterFs(int serverID ,string serverName ,IPEndPoint ipe ,int exceptCount) ;
4         void UnRegisterFs(int serverID) ;
5         void SetFsState(int serverID ,bool activated) ;        
6         void SetActiveCount(int serverID ,int activeCount) ;
7         void UpdateFsPerformance(int serverID ,float cpuUsage ,float memUsage) ;
8         void Clear() ;
9     }

    
   
FS管理器管理連接上本AS的每個功能服務(wù)器,這將在后文中講到。
    除了ITcpPool接口,連接池管理器還實現(xiàn)了ITcpPoolsManager接口:

 1     public interface ITcpPoolsManager :ITcpPool
 2     {
 3         string              TcpPoolSchedulerTypeString{set ;} //"ESFramework.Network.TcpPool.TcpPoolScheduler ,ESFramework"
 4         ArrayList         PoolEndPointList{set ;} //連接池的服務(wù)端PoolEndPointInfo列表        
 5         int                  ReconnectSpan{get ;set ;} // 分鐘         
 6         
 7         void              Initialize() ;    //初次建立連接池
 8         void              Dispose() ; //還原到?jīng)]有初始化的狀態(tài)
 9         void              AddPool(PoolEndPointInfo info) ;
10         void              RemovePool(int serverID) ;
11         
12         void              DisposePoolConnections(int serverID) ;//編號為serverID的服務(wù)器已停止,所以釋放對應(yīng)的Pool,但是不刪除池,仍然定時重連
13         void              ReconnectPool(int serverID) ; //曾停止的服務(wù)器已啟動完畢,所以可以重連了
14 
15         /// <summary>
16         /// 可直接使用 ESFramework.Network.TcpPool.PoolEndPointsDisplayer
17         /// </summary>
18         IPoolEndPointsDisplayer PoolEndPointsDisplayer{set ;}        
19 
20         //由ITcpPoolScheduler使用
21         void SetPerformance(int serverID ,float cpuUsage ,float memUsage) ;    
22         ITcpPoolHelper    TcpPoolHelper{set ;} //可由ESFramework.Architecture.LBS.FourTier.FsManager提供
23     }    

    AddPool方法和RemovePool方法表明可以動態(tài)的添加/移除Tcp連接池。注意接口中的SetPerformance方法,這個方法將被FS管理器調(diào)用,用于把從Remoting接收到的FS的性能數(shù)據(jù)通知給ITcpPoolsManager,然后ITcpPoolsManager再把這些數(shù)據(jù)提交給ITcpPoolScheduler記錄,當(dāng)需要進(jìn)行調(diào)度的時候,ITcpPoolScheduler從這些記錄中進(jìn)行分析計算并找到負(fù)載最小的FSTcpPoolSchedulerTypeString屬性用于向連接池管理器提供調(diào)度者的實際類型,管理器將會通過反射創(chuàng)建調(diào)度者的實例。

還有一個需要設(shè)置的屬性ITcpPoolHelper

1     public interface ITcpPoolHelper
2     {
3         bool ContainsService(int serverID ,int serviceKey) ;
4         bool ServerIsTheType(int serverID ,int destType) ;
5         bool ServerIsCompatible(int serverID ,int destType ,int serviceKey) ;
6         string GetServerNameByID(int serverID) ;
7     }

    由于這個接口提供了每個功能服務(wù)器詳細(xì)信息,所以這個接口的實現(xiàn)可以直接由前面提到的FS管理器順帶實現(xiàn)。

    ITcpPoolsManager
是一個比較復(fù)雜的組件,它需要涉及到多個組件的協(xié)作。所以如果看完這篇文章,仍然還有些不清楚的地方,是很正常的。在后面系列文章的繼續(xù)講述中,這些不清晰的地方會慢慢撥開迷霧。

感謝關(guān)注。

posted on 2007-04-14 22:35 譚文政 閱讀(498) 評論(0)  編輯 收藏 引用 所屬分類: ESFramework
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美日韩在线综合| 欧美精品日韩精品| 麻豆国产精品一区二区三区 | 一区二区三区在线观看视频| 国产日韩欧美一区二区三区四区 | 一区二区三区日韩| 日韩一级在线观看| 这里只有精品视频| 欧美一级播放| 美女诱惑黄网站一区| 麻豆久久久9性大片| 欧美交受高潮1| 国产精品爽黄69| 国产午夜久久久久| 91久久黄色| 亚洲一区二区三区精品视频| 亚洲欧美在线aaa| 久久精品免费观看| 91久久精品国产| 亚洲精品资源| 欧美亚洲免费在线| 欧美在线视频在线播放完整版免费观看| 欧美激情免费观看| 欧美激情一级片一区二区| 欧美区视频在线观看| 国产精品高潮呻吟久久| 国内精品久久久久伊人av| 亚洲毛片在线看| 久久精品视频在线| 日韩一级网站| 久久综合精品国产一区二区三区| 欧美日韩国产一级| 伊人精品在线| 欧美亚洲一区| 日韩视频免费观看| 免费观看成人| 国外视频精品毛片| 亚洲女同同性videoxma| 亚洲国产欧美日韩| 欧美资源在线| 国产精品视频观看| 国产精品99久久久久久久女警| 免费看亚洲片| 欧美制服丝袜| 国产精品网站在线观看| 一本色道久久88综合亚洲精品ⅰ | 久久精品论坛| 国产精品久久久久久久久久三级| 亚洲激情黄色| 欧美激情国产日韩精品一区18| 亚洲欧美www| 国产精品久久久久91| 一本色道久久88精品综合| 欧美激情无毛| 欧美sm视频| 亚洲国产高清一区| 久久综合中文字幕| 欧美一区二区免费视频| 国产精品一区二区你懂得| 亚洲男女自偷自拍| 一区二区三区不卡视频在线观看 | 亚洲日本成人网| 欧美成人小视频| 亚洲激情电影在线| 欧美激情一二三区| 欧美 日韩 国产在线| 91久久久亚洲精品| 亚洲高清网站| 欧美激情第三页| 一本色道久久综合亚洲二区三区| 亚洲免费久久| 国产伦精品一区二区三区免费迷| 香蕉精品999视频一区二区| 亚洲一本大道在线| 国产婷婷97碰碰久久人人蜜臀| 亚洲欧美经典视频| 日韩一级欧洲| 久久久久久久久久久久久久一区| 亚洲欧美日韩在线观看a三区| 国产精品视频区| 久久久久久久国产| 欧美88av| 亚洲图片欧洲图片av| 亚洲素人一区二区| 国产一区二区三区奇米久涩| 久久综合久久久久88| 久久综合九色综合久99| 日韩亚洲欧美在线观看| 中文一区二区| 国模叶桐国产精品一区| 免费精品99久久国产综合精品| 欧美a级在线| 亚洲一区二区三区国产| 久久精品国产久精国产爱| 亚洲精品小视频| 午夜国产欧美理论在线播放| 亚洲国产日日夜夜| 亚洲一区bb| 在线精品在线| 亚洲手机成人高清视频| 在线观看日韩av| 亚洲图片激情小说| 在线观看中文字幕亚洲| 亚洲深夜福利网站| 亚洲国产日韩综合一区| 午夜精品久久久久久久99樱桃| 亚洲黄色天堂| 亚洲欧美一区二区三区极速播放 | 亚洲精品在线免费观看视频| 亚洲一区二区不卡免费| 亚洲人成毛片在线播放女女| 亚洲尤物精选| 亚洲一区二区三区精品动漫| 美乳少妇欧美精品| 久久久久在线观看| 国产精品久久久久久久久免费樱桃 | 亚洲午夜精品国产| 亚洲精品乱码久久久久久| 欧美在线精品一区| 午夜激情亚洲| 欧美性大战xxxxx久久久| 亚洲国产精品一区制服丝袜| 伊人激情综合| 久久久久这里只有精品| 久久久久亚洲综合| 国产一区二区高清| 亚洲淫性视频| 性做久久久久久免费观看欧美| 欧美日韩国产亚洲一区| 亚洲精品一区在线| 亚洲精品一区二区三区av| 久久久国产精品亚洲一区 | 老牛影视一区二区三区| 欧美一级片一区| 国产精品xvideos88| 亚洲精品社区| 日韩视频―中文字幕| 免费国产一区二区| 欧美a级在线| 在线观看成人一级片| 久久九九国产精品| 久久综合九色欧美综合狠狠| 韩国美女久久| 久久婷婷麻豆| 欧美激情精品久久久久久蜜臀| 18成人免费观看视频| 欧美成人激情视频免费观看| 亚洲狠狠丁香婷婷综合久久久| 亚洲日本精品国产第一区| 欧美顶级大胆免费视频| 亚洲伦理久久| 香蕉久久国产| 激情综合五月天| 免费亚洲网站| 9国产精品视频| 欧美中文字幕视频在线观看| 国产视频在线观看一区二区三区| 久久精品综合一区| 欧美国产精品一区| 亚洲最新视频在线| 国产精品一二三| 久久国产精品久久国产精品| 欧美顶级艳妇交换群宴| 日韩视频免费观看高清完整版| 欧美日韩中文在线| 欧美一级久久久久久久大片| 欧美激情bt| 亚洲午夜久久久久久尤物| 国产日韩欧美视频在线| 牛人盗摄一区二区三区视频| 一区二区三区视频观看| 久久一区二区三区四区| 在线性视频日韩欧美| 国产精品亚洲成人| 老司机久久99久久精品播放免费| 99re这里只有精品6| 久久精品视频亚洲| 一个色综合av| 国外成人性视频| 国产精品wwwwww| 美日韩在线观看| 欧美一级视频精品观看| 亚洲精品欧美一区二区三区| 久久国产精品免费一区| 亚洲另类自拍| 国产专区综合网| 欧美日韩一区二区三区在线观看免| 欧美中文日韩| 亚洲天堂成人| 亚洲国产日韩在线一区模特| 久久精品二区三区| 在线亚洲激情| 亚洲高清资源| 国产主播一区| 国产精品女人久久久久久| 欧美1区2区3区| 久久久久久自在自线| 亚洲欧美高清| 一区二区三区 在线观看视频| 亚洲激情专区|