<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)    收藏  舉報

      導航

      主站蜘蛛池模板: 精品无码国产一区二区三区av| 精品午夜福利无人区乱码| 黑人巨大av无码专区| av无码精品一区二区三区| 精品无码久久久久久久久久| 欧美人与zoxxxx另类| 中文字幕日韩精品有码视频| 午夜精品一区二区三区成人| 中文字幕av无码免费一区| 久久精品免视看国产成人| 午夜精品久久久久久久爽 | 久99久热这里只有精品| 国产睡熟迷奷系列网站| 国产成人精品中文字幕| 日韩激情无码av一区二区| 五月天免费中文字幕av| 伊人久久大香线蕉综合网| 天天躁夜夜踩很很踩2022| 亚洲性图日本一区二区三区| 中文字幕av无码免费一区| 成年女人碰碰碰视频播放| 九九热在线精品视频观看| 一本无码在线观看| 国产精品毛片在线完整版| 精品人妻av区乱码| 中文字幕有码高清日韩| 亚洲码与欧洲码区别入口| 亚洲第一国产综合| 少妇伦子伦情品无吗| 沂水县| 国产午夜A理论毛片| 日本黄页网站免费观看| 免费无码成人AV片在线| 亚洲精品一区二区制服| 精品中文字幕一区在线| 丰满无码人妻热妇无码区| 亚洲一区二区三级av| 一本大道久久香蕉成人网| 视频一区二区不中文字幕| 亚洲AV午夜成人无码电影| 中文字幕无线码免费人妻|