<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      分布式文件系統KFS源碼閱讀與分析(三):RPC實現機制(MetaServer端)

      分布式文件系統KFS的MetaServer和Client采用服務器/客戶端模型,MetaServer和Client之間的通訊是通過RPC機制來實現的。這里介紹下KFS中MetaServer端的RPC實現機制。

      1. RPC相關類

      下圖所示為MetaServer端的RPC相關實現類:

      1、NetDispatch

      (1)啟動MetaServer端的epoll主循環;

      (2)通過調用gNetDispatch.Start(gClientPort, gChunkServerPort),在指定的端口監聽來自Client和ChunkServer的RPC請求:

      • 啟動ClientManager的接收者acceptor;
      • 啟動ChunkServerFactory的接收者acceptor。

      2、NetManager

      (1)通過epoll機制,維護一組NetConnection對象;當NetConnection狀態發生變化時,調用其中的KfsCallbackObj的回調函數;

      (2)同時實現了一個定時器機制。

      3、NetConnection

      (1)將KfsCallbackObj和TcpSocket關聯起來,代表來自客戶端的一個連接;

      (2)當TCP連接的狀態發生變化時,KfsCallbackObj的回調函數將會被調用執行。

      4、Acceptor

      (1)從Client/ChunkServer接收新的連接,然后創建一個新的NetConnection與這個新連接關聯起來。NetConnection中含有相關的ClientSM/ChunkServer KfsCallbackObj,而ClientSM/ChunkServer KfsCallbackObj通過IAcceptorOwner的CreateKfsCallbackObj()方法被創建;

      (2)繼承于KfsCallbackObj,回調函數是Acceptor::RecvConnection:

      • 一個Acceptor含有一個相關的NetConnection;
      • 一個Acceptor含有一個成員變量mAcceptorOwner指向ClientManager或ChunkServerFactory。
      5、IAcceptorOwner
      (1)維護一個Acceptor,并提供CreateKfsCallbackObj()接口創建KfsCallbackObj。
      6、ClientManager
      (1)繼承于IAcceptorOwner;
      (2)含有一個Acceptor,用于接收新的連接;
      (3)含有CreateKfsCallbackObj()方法,用于返回一個ClientSM KfsCallbackObj與Client的連接請求關聯起來。
      7、ChunkServerFactory
      (1)繼承于IAcceptorOwner;
      (2)含有一個Acceptor,用于接收新的連接;
      (3)含有CreateKfsCallbackObj()方法,用于返回一個ChunkServer KfsCallbackObj與ChunkServer的連接請求關聯起來。
      8、ClientSM
      (1)繼承于KfsCallbackObj,回調函數是HandleRequest();
      (2)用于與一個Client連接建立關系,處理Client發起的請求。
      9、ChunkServer
      (1)繼承于KfsCallbackObj,回調函數是HandleHello();
      (2)用于與一個ChunkServer連接建立關系,處理ChunkServer發起的hello消息。
      10、KfsCallbackObj
      (1)調用SetHandler()設置回調函數,當外部事件發生時,調用HandleEvent()進行回調處理。

      2. 請求處理過程

      下圖所示為MetaServer端的RPC請求處理過程的時序圖:

      KFS啟動時,將RPC的各種請求操作映射到不同的處理函數上:kfs_startup (startup.cc) > initialize_request_handlers (request.cc) > setup_handlers (request.cc)。

      更進一步來分析一下,以KfsClient與MetaServer之間的RPC為例,KfsClient與MetaServer建立RPC連接后,ClientSM作為KfsClient與MetaServer之間RPC請求的代理,ClientSM負責接收并轉發來自KfsClient的各種不同Request信息,處理后負責向KfsClient寫Response信息,RPC請求的處理過程如下圖所示(以MetaLookup為例,圖中詳細展示了相關的類及方法的調用關系):

      posted on 2011-11-07 01:03  大圓那些事  閱讀(4645)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 884aa四虎影成人精品| 欧洲亚洲国内老熟女超碰| 国产成人精品亚洲日本语言| 亚洲人妻系列中文字幕| 强奷乱码中文字幕| 亚洲欧美成人a∨观看| 激情伊人五月天久久综合| 国产日韩入口一区二区| 苍井空一区二区波多野结衣av | 91密桃精品国产91久久| 日本又色又爽又黄的a片吻戏| 国产国拍精品av在线观看| 蜜桃草视频免费在线观看| 人妻少妇久久中文字幕| 国产美女遭强高潮免费| 97国产精品人人爽人人做| 最新国产精品好看的精品| 99久久无码一区人妻a黑| 亚洲精品香蕉一区二区| 国产高清视频一区二区乱| 国产又粗又猛又爽又黄| 国内精品无码一区二区三区| 亚洲人成网站在线观看播放不卡| 毛片无遮挡高清免费| 大尺度国产一区二区视频| 另类专区一区二区三区| 国产卡一卡二卡三免费入口| 国产精品三级中文字幕| 55大东北熟女啪啪嗷嗷叫| 国产农村激情免费专区| 国产二区三区不卡免费 | 色偷偷亚洲女人天堂观看| 人妻系列无码专区69影院| 天天做天天躁天天躁| 国产在线观看免费观看不卡| gogogo高清免费观看| 国产精品成人国产乱| 亚洲欧美中文字幕日韩一区二区| 午夜福利在线观看成人| 极品无码人妻巨屁股系列| 欧洲性开放老太大|