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

twzheng's cppblog

『站在風口浪尖緊握住鼠標旋轉(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)用進行了很多復(fù)雜的管理,比如功能服務(wù)器的調(diào)度(實現(xiàn)FS的負載均衡)、連接池的動態(tài)添加/移除、控制每個連接池的相關(guān)參數(shù)在UI上的顯示等,并且連接池管理器與單個連接池擁有一樣的接口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ù)”插件,那么當一個“天氣預(yù)測服務(wù)”請求到達AS時,AS就只能從與FS1之間的連接池中Rent一個Tcp連接,而不是從FS2FS3。RentTcpStream方法的out參數(shù)serverID表明了這條連接是指向哪個FS的。

    接下來考慮這樣一個問題,當一個請求到來,這個請求可以被FS1、FS2、FS3處理,那么ITcpPoolsManager到底返回哪個連接池中的連接了?答案是負載最小的那個FS上的連接。
    這是怎么做到的了?其實很簡單。每個FS都定時(比如一秒一次)地把自己的負載(CPU利用率和內(nèi)存利用率)通知給AS,通知給AS的方式可以有多種,比如.Net RemotingESFramework中有一個稱為連接池調(diào)度器ITcpPoolScheduler的東東,它記錄了每個FS實時的負載。這樣當一個請求到來時,連接池管理器ITcpPoolsManager會要求連接池調(diào)度器從眾多的FS中選出一個“滿足條件”且負載最小的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     }

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

    在組件聯(lián)系圖中還有一個IPoolEndPointsDisplayer組件,它用于在UI上顯示每個功能服務(wù)器的詳細信息和性能數(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記錄,當需要進行調(diào)度的時候,ITcpPoolScheduler從這些記錄中進行分析計算并找到負載最小的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ù)器詳細信息,所以這個接口的實現(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>
            亚洲一二三级电影| 久久资源av| 国产女主播一区二区| 蜜臀av一级做a爰片久久 | 国产精品99久久99久久久二8| 欧美体内she精视频在线观看| 国产女人水真多18毛片18精品视频| 亚洲欧美春色| 亚洲综合成人在线| 午夜视频在线观看一区| 香蕉尹人综合在线观看| 久久久999成人| 久久另类ts人妖一区二区| 久久午夜色播影院免费高清| 狼狼综合久久久久综合网 | 久久久久久久性| 狼狼综合久久久久综合网| 母乳一区在线观看| 日韩视频在线你懂得| 亚洲一区不卡| 久久天堂成人| 欧美日韩一区二区高清| 国产欧美不卡| 亚洲精品视频中文字幕| 亚洲天堂成人| 麻豆成人小视频| 亚洲三级网站| 亚洲日本电影在线| 亚洲欧美日韩国产一区二区三区| 久久激情一区| 欧美精品一区二区三区蜜臀| 国产精品v日韩精品| 国产欧美日韩视频一区二区三区 | 国产日韩精品一区观看| 黄色成人av| 亚洲专区免费| 亚洲国产精品免费| 亚洲午夜在线| 男女av一区三区二区色多| 一本色道久久综合亚洲精品小说| 亚洲欧美视频一区| 欧美日韩国产精品| 亚洲第一成人在线| 免费成人在线观看视频| 欧美性猛片xxxx免费看久爱| 黑人一区二区| 亚洲宅男天堂在线观看无病毒| 麻豆九一精品爱看视频在线观看免费| 亚洲国产高清一区二区三区| 亚洲欧美日韩另类| 亚洲天堂男人| 欧美一区2区三区4区公司二百| 欧美高清视频一区| 久久av资源网站| 国产精品第十页| 久久精品久久99精品久久| 欧美在线免费看| 欧美激情精品久久久久| 国产欧美日韩不卡| 亚洲欧美精品suv| 亚洲国产成人久久| 久久久久国产一区二区三区| 国产精品日韩欧美| 一二美女精品欧洲| 亚洲高清视频一区二区| 久久全国免费视频| 午夜精品999| 欧美日韩综合另类| 在线亚洲高清视频| 欧美黑人一区二区三区| 久久精品国产99精品国产亚洲性色| 91久久精品视频| 久久亚洲一区二区| 一区二区在线视频| 久久久中精品2020中文| 欧美亚洲一区| 国产在线观看91精品一区| 美乳少妇欧美精品| 亚洲伦理在线| 国产欧美一区二区三区久久人妖 | 一区二区三区日韩欧美精品| 亚洲欧美成人网| 亚洲第一页中文字幕| 亚洲欧美视频一区二区三区| 极品少妇一区二区三区精品视频| 国产精品xvideos88| 久久青草福利网站| 亚洲嫩草精品久久| 欧美片在线观看| 91久久视频| 久久久久五月天| 欧美一区激情| 欧美一站二站| 最近中文字幕mv在线一区二区三区四区| 久久精品人人爽| 中文一区二区| 久久久精品国产免费观看同学| 久久久久久综合| 亚洲国产精品视频一区| 欧美四级在线观看| 久久精品日韩欧美| 欧美一区午夜视频在线观看| 免费久久99精品国产自在现线| 亚洲免费视频网站| 黄色欧美成人| 国产精品福利网站| 欧美日韩国产精品一区| 国产拍揄自揄精品视频麻豆| 韩国三级电影久久久久久| 欧美日韩精品伦理作品在线免费观看| 国产日本欧美一区二区三区| av不卡在线观看| 亚洲国产精品一区二区第四页av | 亚洲国产成人精品久久| 欧美成人精品不卡视频在线观看| 日韩视频在线一区二区| 欧美成人高清| 欧美激情视频一区二区三区在线播放 | 中文国产成人精品久久一| 欧美在线播放一区| 亚洲一区二区3| 国产午夜精品理论片a级探花| 好看不卡的中文字幕| 亚洲制服欧美中文字幕中文字幕| 中国成人亚色综合网站| 亚洲一区二区三区视频| 亚洲一区二区三区乱码aⅴ| 中文在线资源观看视频网站免费不卡| 一区二区日韩精品| 99热在这里有精品免费| 在线高清一区| 亚洲韩国一区二区三区| 亚洲区在线播放| 日韩一级欧洲| 免费欧美日韩| 欧美在线综合| 欧美在线视频一区二区| 欧美日韩精品一区视频| 欧美一区免费| 久久天堂成人| 欧美区高清在线| 亚洲欧洲一区二区三区久久| 蜜臀久久99精品久久久画质超高清 | 国产精品美女| 亚洲精品视频一区| 久久久亚洲国产美女国产盗摄| 午夜免费日韩视频| 欧美日韩三级| 欧美成人精品激情在线观看 | 久久久久久穴| 国产一区二区三区免费不卡| 亚洲专区在线| 久久亚洲国产精品一区二区| 精品二区视频| 欧美成人激情视频免费观看| 亚洲人成亚洲人成在线观看| 亚洲久久一区| 国产精品成人免费视频| 亚洲在线1234| 久久蜜臀精品av| 亚洲精品黄网在线观看| 欧美日韩精品一区| 亚洲小说欧美另类婷婷| 久久伊人亚洲| 一区二区久久久久| 国产三级精品在线不卡| 久久香蕉国产线看观看av| 亚洲国产综合91精品麻豆| 这里只有精品视频| 国产精品爱久久久久久久| 欧美一区影院| 亚洲第一偷拍| 午夜国产一区| 在线观看视频一区二区| 欧美a级在线| 亚洲一区二区动漫| 久久久精彩视频| 伊人久久婷婷色综合98网| 免费在线成人av| 亚洲精品1区2区| 性8sex亚洲区入口| 久久在线精品| 亚洲日本中文字幕区| 欧美精品在线观看| 欧美在线播放高清精品| 亚洲国产一区二区视频| 久久国产一区| 在线观看日韩av电影| 久久视频一区二区| 亚洲第一成人在线| 亚洲视频在线观看免费| 国内久久精品视频| 美女免费视频一区| 亚洲精品免费电影| 久久国产88| **欧美日韩vr在线| 欧美日韩视频在线观看一区二区三区 | 亚洲美女视频在线观看| 国产亚洲aⅴaaaaaa毛片| 久久久久在线|