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

twzheng's cppblog

『站在風口浪尖緊握住鼠標旋轉!』 http://www.cnblogs.com/twzheng

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

凡是帶有“池”的,比如數據庫連接池、對象池、緩沖區池(后面可以看到IBuffPool)等等,都是為了避免資源的反復創建/銷毀所帶來的開銷。需要為哪些資源對象建立“池”了?這些資源對象通常符合下面幾個特性:
(1)在應用中需要反復的被創建/銷毀。
(2)創建/銷毀的開銷比較大
(3)應用中給定時刻,對該資源對象的數量要求比較大
(4)資源對象最好是無狀態的(Stateless),這樣方便直接復用

    
AS(回顧
將所有的功能服務請求轉發給為該AS提供服務的FS群中的一個(參見。。。),然后FS將請求交給對應的功能插件處理。那么ASFS之間的通信通過什么方式進行了?可選的方式有.netRemotingWebServiceTcp/Udp等。基于效率和準確性的考慮,WebServiceUdp是不大合適的。那么TCP.netRemoting,到底選用哪個?我們知道.netRemoting底層也是基于TcpHttp協議的,為了做到模擬本地方法調用的方式,.NETRemoting也做了很多轉換的操作(堆棧幀《=》消息),導致了一些開銷,而直接使用Tcp則可以避免,而且ASFS之間的消息的格式是兼容的(主要是使用了完全相同的消息頭,這就夠了),也就是說一條消息從客戶端發出,可以不需做任何轉換就直接被FS的功能插件處理(加密、壓縮不計在內)。

    
如你所想,ESFramework推薦的方式是ASFS直接通過低層的Tcp進行通信。為了避免Tcp連接不斷建立、銷毀所帶來的開銷,ASFS通信前,可以建立Tcp連接池。本文就關注Tcp連接池的原理和實現。

   
Tcp
連接池中存放的是Tcp連接――即NetworkStream對象,當應用需要使用時,就從Tcp連接池中租借“Rent”一條連接,用完后再歸還“GiveBack”給連接池。
public class TcpStreamPool :ITcpStreamPool ,ITcpPool

    從上面的定義可以看到TcpStreamPool從兩個接口繼承:ITcpPoolITcpStreamPool。先看看ITcpStreamPool的定義:

 1     /// <summary>
 2     /// ITCPStreamPool tcp連接池用于管理大量的TCP連接
 3     ///  作者:朱偉 sky.zhuwei@163.com  
 4     /// sky 2005.02.24
 5     /// </summary>
 6     public interface ITcpStreamPool 
 7     {        
 8         int         ServerID {get ;set ;}
 9         int            StreamCount           {get ;set ;} //期望連接總數
10         int            ActiveConnectionCount {get ;} //實際可用的連接數        
11         IPEndPoint  FsIpe       {get ;set ;} //功能服務器的IPE
12         int         ReconnectSpan{get ;set ;} // 分鐘     
13         bool        IsActive{get;}
14 
15         void ReConnect() ; //手動重連
16         void Initialize() ;        
17         void DisposeConnections() ; //釋放池中所有連接,可以通過ReConnect來重新建立連接        
18         void SetStreamDamaged(int streamHashCode) ;            
19 
20         NetworkStream RentTcpStream() ;    
21         void GiveBackTcpStream(int streamHashCode) ;//將tcp連接規還給連接池
22     }    

    AS和每個FS之間都有一個連接池,每個功能服務器的區分是通過ServerID來的,所以連接池也有一個ServerID屬性標志了本連接池是與哪個FS相連的。ReconnectSpan屬性表明連接池要支持重連機制,即當連接池中的所有連接都斷開后(可能是FS掉線引起的),連接池應能定時重連FS,直至該池中的所有連接重新建立。
    如果應用從連接池Rent了一條連接,然后在使用的過程中該連接斷開了,則應用應該調用連接池的SetStreamDamaged方法通知連接池該連接已不可用。RentTcpStream方法和GiveBackTcpStream方法是我們最常用的租借/歸還連接的方法了。
    注意,很多方法的參數中有streamHashCode參數,它是NetworkStream對象的Hashcode,系統中的每個NetworkStream對象的HashCode是不同的,并且,它的HashCodeNetworkStream對象的整個生命期間不變,所以可以使用HashCode唯一標志每個連接。

    似乎,ITcpStreamPool接口已經反映了一個連接池的所有東西,是的。那么ITcpPool接口又起什么作用了?現看看ITcpPool的樣子:

 1 /// <summary>
 2     /// ITcpPool 用于將一個TCP連接池和一組TCP連接池統一起來。這樣消息分派器只需使用ITcpPool接口即可。
 3     /// zhuweisky 
 4     /// </summary>
 5     public interface ITcpPool
 6     {
 7         RentStreamResult RentTcpStream(int poolTypeKey ,int serviceKey ,out NetworkStream stream ,out int serverID) ;//poolTypeKey表示某個城市,serviceKey表示某項服務
 8         void GiveBackTcpStream(int streamHashCode ,int serverID) ;//將tcp連接規還給連接池
 9         void SetStreamDamaged(int streamHashCode ,int serverID) ;//poolKey如果不易保存,則此處簡單的傳-1即可    
10 
11         event CallBackCountChanged     ActiveConnectionCountChanged ;     
12         event CallBackPoolStateChanged PoolStateChanged ;        
13     }
14 
15     public delegate void CallBackCountChanged(int serverID ,int activeConnCount) ;
16     public delegate void CallBackPoolStateChanged(int serverID ,bool disconnected) ;
17 
18     public enum RentStreamResult
19     {
20         Succeed ,Busy ,TheServiceNotExist
21     }

    你可能已經發現,ITcpPool中的所有元素在ITcpStreamPool接口中都可以找到對應物,只是有些方法的參數變復雜了。這主要是因為ITcpStreamPool接口針對的是一個FS,而ITcpPool可能是針對一個FS也可能是一組FS。當ITcpPool背后是一組FS時,就需要參數ServerID來區分每一個FS。我們知道,AS和對應的每個FS之間都使用一個Tcp連接池通信:
 

    所有的這些連接池需要被管理起來,ESFramework中的ITcpPoolsManager連接池管理器)組件實現了對多個Tcp連接池的管理。為了把連接池管理器和單個連接池統一起來,使它們有相同的外部接口,所以引入了ITcpPool接口。
    這樣做的好處是,在應用中直接使用
ITcpPool接口就可以了,而不用關心這個接口背后是一個“單個連接池”(對應單個FS)還是由連接池管理器管理的“一組連接池”(對應多個FS)。而且ITcpPoolsManager為我們的應用進行了很多復雜的管理,比如動能服務器的調度(實現FS的負載均衡)、連接池的動態添加/移除等。這些將在下文中介紹。

感謝關注。

posted on 2007-04-14 22:17 譚文政 閱讀(691) 評論(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>
            亚洲精品影院在线观看| 99视频日韩| 欧美成人亚洲成人日韩成人| 久久网站免费| 亚洲欧美日韩国产| 在线播放日韩| 国产精品一二三四| 久久久久久国产精品一区| 最新成人av在线| 亚洲永久网站| 亚洲高清免费视频| 国产精品私人影院| 欧美日韩亚洲一区| 欧美精品aa| 免费久久99精品国产| 久久成人久久爱| 亚洲欧美日韩视频一区| 亚洲毛片av在线| 美女脱光内衣内裤视频久久影院 | 亚洲精品网站在线播放gif| 欧美在线视频网站| 欧美中文在线免费| 久久精品免费| 免费不卡欧美自拍视频| 久久综合久色欧美综合狠狠| 欧美顶级大胆免费视频| 欧美激情久久久| 国产精品久久久久77777| 国产精品入口福利| 黄色成人免费观看| 亚洲欧洲中文日韩久久av乱码| 亚洲国产欧美日韩精品| 怡红院精品视频在线观看极品| 精品999网站| 中日韩美女免费视频网站在线观看| 久久久水蜜桃| 亚洲韩国青草视频| 国产精品99久久久久久久vr| 久久精品视频导航| 国产精品av久久久久久麻豆网| 美女精品网站| 国产精品一区二区在线观看网站| 国产精品美女www爽爽爽| 国产视频综合在线| 亚洲电影免费观看高清| 亚洲一区二区三区四区视频| 久久精品99国产精品酒店日本| 久久在线视频| 亚洲理论在线| 久久婷婷亚洲| 艳女tv在线观看国产一区| 亚洲女同精品视频| 日韩一区二区精品在线观看| 欧美日韩国产系列| 午夜精品久久久久| 久久尤物电影视频在线观看| 国产亚洲综合性久久久影院| 久热这里只精品99re8久| 韩国精品久久久999| 欧美激情国产日韩精品一区18| 久久精品国产一区二区三区| 在线国产精品播放| 欧美不卡在线视频| 国产精品成人va在线观看| 日韩网站在线观看| 亚洲一区二区三区四区五区午夜| 国产精品va在线播放| 久久久久久久久久久久久久一区| 久久九九精品99国产精品| 日韩午夜精品视频| 亚洲一区二区在线观看视频| 国产精品国码视频| 欧美1区视频| 欧美日韩视频一区二区| 久久综合九色综合欧美就去吻| 欧美—级a级欧美特级ar全黄| 国精产品99永久一区一区| 亚洲国产你懂的| 国产精品一二一区| 亚洲精品美女在线| 亚洲国产精品精华液网站| 久久成人综合网| 久久综合精品国产一区二区三区| 欧美日韩播放| 欧美激情一区二区三区不卡| 91久久精品国产91久久| 欧美精品亚洲精品| 亚洲第一成人在线| 亚洲天堂av综合网| 在线亚洲一区二区| 亚洲天堂av图片| 亚洲日韩欧美视频一区| 亚洲一区免费观看| 久久久久久亚洲综合影院红桃 | 宅男精品导航| 在线视频精品一| 欧美二区乱c少妇| 午夜在线视频观看日韩17c| 亚洲欧洲一区二区在线播放| 国产精品海角社区在线观看| 亚洲欧美在线另类| 欧美福利一区二区三区| 欧美成人蜜桃| 欧美中文字幕在线观看| 欧美午夜精品久久久久免费视| 国产一区二区电影在线观看| 女主播福利一区| 免费不卡在线观看| 一个色综合av| 欧美在线视频一区二区三区| 在线观看日韩av电影| 嫩草伊人久久精品少妇av杨幂| 久久久久久久久蜜桃| 亚洲国产精品黑人久久久| 亚洲视频在线播放| 麻豆av一区二区三区| 蜜臀久久99精品久久久画质超高清| 亚洲第一精品电影| 亚洲精品资源| 激情五月婷婷综合| 久久精品国产欧美亚洲人人爽| 鲁大师影院一区二区三区| 亚洲国产精品传媒在线观看| 午夜激情亚洲| 亚洲一区激情| 亚洲国产精品久久91精品| 久久综合九色综合欧美就去吻| 久久久欧美一区二区| 久久嫩草精品久久久久| 亚洲美女视频网| 一本色道久久综合亚洲91| 亚洲综合色丁香婷婷六月图片| 亚洲欧美日韩精品久久亚洲区| 免费试看一区| 国产伦一区二区三区色一情| 欧美午夜精品久久久久久孕妇| 国产一区日韩一区| 亚洲香蕉成视频在线观看| 亚洲欧美日韩另类精品一区二区三区| 久久久久国产精品麻豆ai换脸| 亚洲国产高潮在线观看| 理论片一区二区在线| 亚洲欧洲av一区二区| 一级日韩一区在线观看| 亚洲卡通欧美制服中文| 亚洲欧美中文另类| 午夜久久美女| 欧美福利一区二区三区| 亚洲愉拍自拍另类高清精品| 一区二区国产在线观看| 亚洲视频播放| 一本久久综合亚洲鲁鲁五月天| 91久久精品www人人做人人爽| 国产精品乱人伦中文| 麻豆久久婷婷| 亚洲一区在线观看视频| 蜜桃av噜噜一区二区三区| 在线观看不卡| 欧美日韩久久精品| 亚洲国产精品悠悠久久琪琪| 国产欧美日本在线| 欧美三级视频在线观看| 欧美一区二区性| 午夜久久福利| 欧美一二三区在线观看| 亚洲一区三区电影在线观看| 欧美激情第五页| 亚洲综合精品| 国产一区二区三区四区三区四| 欧美日韩无遮挡| 久久综合给合久久狠狠狠97色69| 国产一区欧美| 国产精品久久久久久久免费软件| 久久久久九九九九| 国产欧美一区二区白浆黑人| 国产精品永久入口久久久| 欧美日韩久久精品| 久久久蜜桃精品| 亚洲卡通欧美制服中文| 欧美成人高清| 欧美成人免费全部| 久久久精品tv| 亚洲欧洲久久| 最近看过的日韩成人| 亚洲老司机av| 香蕉久久国产| 国产精品视频自拍| 久久精品毛片| 欧美成人午夜剧场免费观看| 欧美国产91| 国产欧美亚洲精品| 黄色亚洲免费| 亚洲国产精品毛片| 久久久久久色| 亚洲欧美日韩另类| 国产日韩av一区二区| 欧美在线三区| 日韩视频永久免费观看| 久久久久天天天天| 国产综合香蕉五月婷在线|