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

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之間的通信通過什么方式進行了?可選的方式有.netRemoting、WebService、Tcp/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>
            日韩午夜在线播放| 亚洲欧美日韩爽爽影院| 久久综合网色—综合色88| 国产一区二区按摩在线观看| 欧美在线播放| 亚洲人成在线播放网站岛国| 午夜精品久久久久久| 久久野战av| 欧美成人影音| 性欧美超级视频| 在线精品视频在线观看高清| 国产精品成人一区| 欧美国产亚洲视频| 久久国产精品黑丝| 一区二区三区.www| 亚洲国产精品视频一区| 久久精品国产99国产精品澳门| 一区二区在线视频播放| 欧美日韩一区成人| 麻豆九一精品爱看视频在线观看免费| 日韩午夜高潮| 亚洲激情视频| 欧美成人一区二区在线| 亚洲剧情一区二区| 欧美成人午夜激情在线| 亚洲日本无吗高清不卡| 午夜久久电影网| 亚洲一区视频在线| 99在线精品视频| 日韩一级不卡| 久久国产精品一区二区三区| 欧美国产欧美综合| 国产日韩欧美综合在线| 国产精品久久夜| 欧美体内she精视频| 欧美大片91| 欧美噜噜久久久xxx| 欧美99久久| 久久精品夜夜夜夜久久| 久久裸体视频| 裸体女人亚洲精品一区| 国产精品系列在线| 国产精品中文在线| 国产精品久久九九| 亚洲人成网站777色婷婷| 极品尤物av久久免费看| 亚洲一区二区av电影| 午夜国产不卡在线观看视频| 午夜精品美女自拍福到在线| 亚洲激情社区| 欧美福利视频一区| 136国产福利精品导航| 欧美影院午夜播放| 欧美成va人片在线观看| 亚洲国产日本| 男人的天堂成人在线| 激情自拍一区| 久久久久国产精品厨房| 亚洲国产第一页| 一本大道久久a久久综合婷婷| 久久久91精品国产一区二区精品| 亚洲主播在线观看| 在线成人www免费观看视频| 欧美激情精品久久久| 亚洲精品国产系列| 狠狠综合久久av一区二区小说| 国产一区二区欧美| 亚洲一区二区在线| 久久精品免费看| 亚洲欧美日韩直播| 国产精品九九久久久久久久| 亚洲香蕉伊综合在人在线视看| 亚洲欧洲在线一区| 男女视频一区二区| 亚洲日韩视频| 9久草视频在线视频精品| 欧美日韩在线播放| 亚洲欧美日韩天堂| 欧美中文字幕在线视频| 狠狠噜噜久久| 亚洲国产免费看| 欧美精品一区二区三区在线播放 | 亚洲在线播放电影| 亚洲手机视频| 久久亚洲私人国产精品va| 91久久精品日日躁夜夜躁欧美| 美女999久久久精品视频| 亚洲视频图片小说| 久久综合色婷婷| 国产精品久久久久久久久久久久久久| 在线一区亚洲| 欧美成人免费大片| 欧美精品成人| 在线看欧美日韩| 亚洲第一福利视频| 欧美日韩在线播放三区四区| 久久成人羞羞网站| 亚洲一区二区黄色| 精久久久久久| 亚洲美女av在线播放| 国产精品美女久久久久久免费| 久久精品国产在热久久| 欧美激情一区二区三区在线视频 | 欧美国产日韩一区二区| 亚洲欧美日韩综合国产aⅴ| 久久精品国语| 亚洲一品av免费观看| 久久久久国产精品人| 亚洲视频精品| 亚洲午夜一二三区视频| 亚洲高清一区二区三区| 美女网站在线免费欧美精品| 欧美日韩一区二| 久久青草久久| 日韩视频在线一区| 国产综合网站| 久久综合给合久久狠狠色| 亚洲欧美一区二区三区在线| 亚洲国产视频一区二区| 欧美国产综合一区二区| 国产精品网站在线播放| 日韩亚洲一区在线播放| 最新精品在线| 久久综合久色欧美综合狠狠| 欧美制服丝袜| 国产精品视频在线观看| 日韩一区二区精品视频| 亚洲欧洲久久| 欧美sm视频| 亚洲国产高潮在线观看| 91久久香蕉国产日韩欧美9色| 欧美自拍偷拍午夜视频| 欧美一区二区三区喷汁尤物| 国产精品毛片a∨一区二区三区|国| 亚洲美女视频网| 亚洲视频一区二区在线观看| 欧美日韩免费观看一区三区| 亚洲国产精品va在线看黑人| 亚洲国产三级网| 麻豆精品一区二区av白丝在线| 美女性感视频久久久| 亚洲高清免费在线| 欧美国产乱视频| 亚洲精品孕妇| 香蕉亚洲视频| 激情久久久久| 免费成人av| 亚洲精品日韩激情在线电影| 妖精成人www高清在线观看| 亚洲一区在线直播| 欧美在线free| 精久久久久久| 欧美国产大片| 亚洲色图制服丝袜| 久久久精品视频成人| 伊人春色精品| 欧美精品啪啪| 午夜日本精品| 亚洲国产成人在线播放| 亚洲视频在线观看网站| 国产嫩草一区二区三区在线观看| 欧美中文字幕视频| 国内精品美女在线观看| 麻豆国产精品777777在线| 亚洲精品久久久久久久久久久久久| 在线视频亚洲欧美| 国产在线欧美| 欧美精品在线免费播放| 亚洲欧美欧美一区二区三区| 免费精品99久久国产综合精品| 日韩一级黄色大片| 国产亚洲欧美另类中文| 欧美国产日本在线| 翔田千里一区二区| 亚洲日本理论电影| 久久精品国产清自在天天线| 亚洲三级视频在线观看| 国产欧美69| 欧美日韩国产综合网| 日韩一二三在线视频播| 久久久久国内| 亚洲一区二区影院| 亚洲精品在线三区| 欧美激情小视频| 欧美在线啊v一区| 亚洲国产精品高清久久久| 国产精品乱码人人做人人爱| 久久综合免费视频影院| 羞羞答答国产精品www一本 | 欧美一区二区| 一区二区三区不卡视频在线观看| 国产丝袜一区二区| 国产精品久久久久久久久借妻| 久久综合五月天婷婷伊人| 亚洲免费在线视频| 夜夜夜久久久| 亚洲精品久久久一区二区三区| 久久夜色精品国产欧美乱| 欧美一区二区三区免费视频| 亚洲永久精品国产|