twemproxy簡介


twemproxy explore

twemproxy,也叫nutcraker。是一個twtter開源的一個redis和memcache代理服務器。 redis作為一個高效的緩存服務器,非常具有應用價值。但是當使用比較多的時候,就希望可以通過某種方式 統一進行管理。避免每個應用每個客戶端管理連接的松散性。同時在一定程度上變得可以控制。 搜索了不少的開源代理項目,知乎實現的python分片客戶端。node的代理中間層,還有各種restfull的開源代理。

  • RedBrige

    • C + epoll實現的一個小的webserver
    • redis自身執行lua腳本的功能來執行redis命令
    • 訪問時在url中帶上lua腳本文件的名字,直接調用執行該lua腳本
    • 本質是通過http協議遠程執行lua腳本
  • Webdis

    • libevent, http-parser...實現的小型web服務器
    • C 語言實現,通過unix-socket,TCP調用redis命令。
    • 訪問方法: /cmd/key/arg0,arg1,... 實質是對redis命令的簡單變換
  • redis-proxy

    • 使用node寫的redis代理層。
    • 支持主從節點的失敗處理(可以仔細研究)
    • 測試后發現性能為原生的1/3
  • twemproxy

    • 支持失敗節點自動刪除

      • 可以設置重新連接該節點的時間
      • 可以設置連接多少次之后刪除該節點
      • 該方式適合作為cache存儲
    • 支持設置HashTag

      • 通過HashTag可以自己設定將兩個KEYhash到同一個實例上去。
    • 減少與redis的直接連接數

      • 保持與redis的長連接
      • 可設置代理與后台每個redis連接的數目
    • 自動分片到后端多個redis實例上

      • 多種hash算法(部分還沒有研究明白)
      • 可以設置后端實例的權重
    • 避免單點問題

      • 可以平行部署多個代理層.client自動選擇可用的一個
    • 支持redis pipelining request

    • 支持狀態監控

      • 可設置狀態監控ip和端口,訪問ip和端口可以得到一個json格式的狀態信息串
      • 可設置監控信息刷新間隔時間
    • 高吞吐量

      • 連接復用,內存復用。
      • 將多個連接請求,組成reids pipelining統一向redis請求。

另外可以修改redis的源代碼,抽取出redis中的前半部分,作為一個中間代理層。最終都是通過linux下的epoll 事件機制提高並發效率,其中nutcraker本身也是使用epoll的事件機制。並且在性能測試上的表現非常出色。

配置部署建議: 編譯時候打開logging模塊。

redis部署知識: AOF;一種記錄redis寫操作的文件,用於恢復redis數據。

 

轉自:http://cloudaice.com/twemproxy-explore/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM