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

lxyfirst

C++博客 首頁 新隨筆 聯系 聚合 管理
  33 Posts :: 3 Stories :: 27 Comments :: 0 Trackbacks
twemproxy(nutcracker)是twitter實現的開源memcached和redis代理,主要功能是根據key分發請求到后端的memcached和redis服務器,簡化memcached和redis集群服務的實現。
出于對twemproxy實現機制的好奇,簡要閱讀了代碼,特別是網絡處理部分,一般這部分是網絡服務器的核心,這里記錄下其代碼實現邏輯和發現的問題。

twemproxy作為代理服務器,主體邏輯都圍繞著數據流轉,采用了單線程非阻塞模型,在linux下由epoll驅動整個程序的運行,對于事件驅動模塊的封裝在event目錄下,event_base對象是引擎,conn對象是具體的連接,conn對象中定義一系列事件處理的回調函數,典型的reactor機制,linux下的實現文件是nc_epoll.c 。 
事件引擎模塊使用了兩層回調機制, event_base上有個基本的回調函數,這個回調函數進一步調用conn對象的相應回調函數  (注:一般直接使用conn的回調也就夠了)。
面向客戶端的conn回調:
        conn->recv = msg_recv;
        conn->recv_next = req_recv_next;
        conn->recv_done = req_recv_done;
        conn->send = msg_send;
        conn->send_next = rsp_send_next;
        conn->send_done = rsp_send_done;
        conn->close = client_close;
        conn->active = client_active;

        conn->enqueue_outq = req_client_enqueue_omsgq;
        conn->dequeue_outq = req_client_dequeue_omsgq;
面向后端memcached和redis的conn回調:
        conn->recv = msg_recv;
        conn->recv_next = rsp_recv_next;
        conn->recv_done = rsp_recv_done;
        conn->send = msg_send;
        conn->send_next = req_send_next;
        conn->send_done = req_send_done;
        conn->close = server_close;
        conn->active = server_active;
        conn->enqueue_inq = req_server_enqueue_imsgq;
        conn->dequeue_inq = req_server_dequeue_imsgq;
        conn->enqueue_outq = req_server_enqueue_omsgq;
        conn->dequeue_outq = req_server_dequeue_omsgq;
twemproxy面向客戶端時,由proxy_accept接收連接,創建客戶端conn對象,并將其加入到事件引擎中。
twemproxy面向后端時,由server_pool管理各個到后端的conn對象,同樣會加入到事件引擎中。

在請求處理模塊有2個主要的概念是 mbuf對象和msg對象,mbuf對象是數據緩沖區,發送和接收的數據都存放在mbuf中, 采用鏈式管理。msg對象是具體的邏輯請求,采用鏈式管理,形成請求/響應隊列。請求和響應的處理模塊分別在nc_request.c和nc_response.c中實現。

客戶端連接的處理邏輯:

    core_recv 
        conn->recv        即msg_recv ,read事件處理
            conn->recv_next           即req_recv_next ,獲得msg對象,沒有則創建
            msg_recv_chain             創建mbuf對象,接收并處理數據
                  [create mbuf]
                  conn_recv       真正的read數據
                  msg_parse      解析 , mbuf->msg
                       msg_parsed   解析完成
                           conn->recv_done   即req_recv_done    
                               req_filter        過濾器,暫無操作
                               req_forward    分發請求
                                   server_pool_conn 根據key獲得后端conn對象
                                   將s_conn加入寫事件監控,將msg加入轉發隊列,可寫事件被觸發后轉發隊列內請求
                                   s_conn->enqueue_inq req_server_enqueue_imsgq
 
                  conn->recv_next      即req_recv_next,繼續下一個

注:從代碼實現看回調邏輯的層次性不強,收發數據放入mbuf列表,然后用writev處理,在遇到發送不完時還要拆分mbuf,重新組織iovec,實現上有些復雜。
另外conn對象的數據采用一次讀/寫完的方式處理,在高壓力下可能會產生大量的mbuf對象。

未完待續。
posted on 2014-03-09 13:42 star 閱讀(2204) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久久综合视频| 亚洲欧美日韩一区二区| 欧美理论电影在线观看| 免费不卡在线视频| 欧美国产精品| 欧美日韩在线三区| 国产日韩一区二区三区在线播放| 国产精品自拍三区| 精品1区2区3区4区| 99精品国产在热久久婷婷| 一区二区三区免费网站| 久久国产婷婷国产香蕉| 亚洲大胆人体在线| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美激情小视频| 亚洲精品国产精品乱码不99| 亚洲一区自拍| 欧美日韩www| 一区二区三区在线观看国产| 夜夜嗨网站十八久久 | 亚洲国产精品热久久| 亚洲图片欧洲图片av| 浪潮色综合久久天堂| 国产精品多人| 最新国产成人在线观看| 欧美在线看片| 亚洲免费大片| 久久午夜激情| 国产一区二区在线免费观看| 国产精品一区二区在线| av72成人在线| 午夜欧美精品| 亚洲精品一区久久久久久| 久久经典综合| 国产日韩在线不卡| 亚洲欧美www| 日韩一级片网址| 欧美成人第一页| 激情六月婷婷综合| 性做久久久久久久久| 一本色道久久综合亚洲精品不卡| 久久久美女艺术照精彩视频福利播放 | 亚洲欧美卡通另类91av| 欧美成年人视频网站欧美| 国产欧美日韩综合一区在线播放| 一区二区三区视频在线| 亚洲欧洲日韩女同| 欧美成人午夜激情在线| 一区三区视频| 美女福利精品视频| 欧美一级日韩一级| 国产欧美精品一区二区三区介绍| 国产精品99久久久久久久久| 91久久精品日日躁夜夜躁国产| 久久久噜噜噜| 亚洲欧洲精品一区二区三区波多野1战4| 另类天堂视频在线观看| 久久综合狠狠| 99精品久久| 亚洲精品欧美专区| 欧美精品在线一区二区三区| 日韩一级二级三级| 亚洲美女黄色| 欧美视频久久| 欧美在线视频日韩| 久久电影一区| 亚洲免费精品| 一区二区三区四区五区视频| 国产精品稀缺呦系列在线| 久久爱www久久做| 久久久水蜜桃av免费网站| 亚洲欧洲综合| 日韩午夜av电影| 国产欧美日韩一区二区三区在线| 久久久精品免费视频| 久久视频在线看| 9i看片成人免费高清| 亚洲永久免费视频| 一区二区在线观看视频| 亚洲国产精品一区二区尤物区| 欧美激情视频给我| 午夜精品福利一区二区蜜股av| 性色av一区二区三区在线观看| 一区国产精品| 夜夜嗨av一区二区三区免费区| 国产一区二区三区四区老人| 亚洲福利视频网站| 亚洲激情综合| 亚洲精品久久久久中文字幕欢迎你 | 午夜视频久久久久久| 欧美一区二区女人| 亚洲国产成人一区| 一区二区三区视频在线看| 激情综合色丁香一区二区| 亚洲精品国精品久久99热一| 国产伦精品一区二区三区免费| 蜜桃av噜噜一区| 国产精品www色诱视频| 久久婷婷国产综合精品青草| 欧美日韩1区2区3区| 久久久久久久综合狠狠综合| 牛牛影视久久网| 欧美伊人久久久久久久久影院| 老司机一区二区三区| 欧美在线亚洲在线| 欧美日韩免费一区| 久久青草久久| 国产精品尤物| 一区二区三区免费网站| 亚洲精品久久在线| 99国产精品国产精品久久 | 欧美中文字幕在线播放| 日韩午夜在线电影| 你懂的亚洲视频| 免费看成人av| 国产亚洲视频在线| 国产精品99久久久久久久久久久久| 亚洲电影在线免费观看| 亚洲成人自拍视频| 国产综合视频| 欧美一级免费视频| 欧美综合国产| 国产女主播在线一区二区| 日韩一区二区精品在线观看| 亚洲伦理久久| 欧美伦理在线观看| 亚洲激情第一页| 亚洲黄色在线观看| 老妇喷水一区二区三区| 久久蜜臀精品av| 黄色成人精品网站| 久久久亚洲人| 久久精品亚洲乱码伦伦中文| 国产精品入口麻豆原神| 正在播放欧美视频| 亚洲欧美日韩一区二区在线| 国产精品伦一区| 亚洲一区二区动漫| 久久精品国产清高在天天线| 国产日韩精品在线播放| 欧美主播一区二区三区美女 久久精品人 | 国产精品丝袜xxxxxxx| 久久成人免费视频| 欧美黑人国产人伦爽爽爽| 在线观看亚洲专区| 久久久精品日韩| 欧美成人中文| 9l视频自拍蝌蚪9l视频成人| 欧美日韩国产影片| 亚洲午夜影视影院在线观看| 欧美伊人久久大香线蕉综合69| 国产一区日韩欧美| 蜜桃av一区| 日韩一区二区精品在线观看| 欧美一区二区三区的| 狠狠狠色丁香婷婷综合久久五月 | 欧美日韩日本国产亚洲在线| 一个色综合av| 久久久久久久欧美精品| 亚洲精品色婷婷福利天堂| 欧美午夜欧美| 久久精品91久久久久久再现| 欧美激情亚洲激情| 校园激情久久| 亚洲黄色成人| 国产精品劲爆视频| 久久久久久久精| 亚洲人成网在线播放| 欧美在线一级va免费观看| 亚洲高清一区二| 国产精品亚洲网站| 欧美国产乱视频| 欧美在线你懂的| 亚洲精品综合| 久久综合给合| 亚洲视频一二| 在线免费观看一区二区三区| 国产精品久久久久秋霞鲁丝| 久久免费偷拍视频| 亚洲色图综合久久| 欧美电影专区| 久久久午夜精品| 亚洲欧美日韩中文视频| 亚洲精品社区| 在线欧美日韩精品| 国产视频欧美视频| 欧美日韩亚洲一区二区三区在线 | 亚洲一区二区精品在线观看| 国产自产精品| 国产精品一区=区| 欧美理论视频| 欧美成人一区二免费视频软件| 久久成人国产| 欧美一区二区播放| 欧美亚洲综合久久| 亚洲图片欧美日产| 一区二区三区视频在线播放| 亚洲剧情一区二区| 亚洲精品一区二区三区樱花| 欧美成人精品|