一個KV類型數據庫的代理框架:kvproxy

ew45 10年前發布 | 22K 次閱讀 kvproxy

kvproxy

一個KV類型數據庫的代理框架。可以通過編寫擴展(so動態庫)的方式增加對指定協議的支持。默認已經支持memcached的二進制協議和文本協議。

特性

  • 快速
  • 輕量級
  • 支持讀寫分離
  • 支持數據的同步和異步復制
  • 支持一致性哈希
  • 支持failover機制。后端服務不可用時,自動摘除。
  • 提供ini格式的配置文件
  • 和后端服務器保持持久化連接
  • 多線程模式,linux平臺下支持cpu親緣性
  • 良好的協議擴展性。
  • 默認支持memcached的二進制協議和文本協議

文檔

kvproxy的master和slave數據主從復制簡介

kvproxy配置文件之集群設置

安裝

$ wget --no-check-certificate https://github.com/exinnet/kvproxy/archive/master.zip
$ unzip master
$ cd kvproxy-master
$ make
$ #optional, install kvproxy in /usr/local/kvproxy
$ sudo make install

啟動與關閉
# 啟動
$ ./sbin/kvproxy start

# 關閉
$ ./sbin/kvproxy stop

# 重啟
$ ./sbin/kvproxy restart

查看運行狀態

可以通過telnet命令連接到kvproxy的監聽端口,然后使用status命令查看kvproxy的運行狀況。

$telnet 127.0.0.1 55669
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
status

Number of processed requests [0]
Number of requests failed [0]
  - 127.0.0.1:11211 [0]
Number of continuous requests failed [0]
  - 127.0.0.1:11211 [0]
All of offline hosts [0] 
Number of client connection [1]
Number of backend connection [0]
Read timeout of backend connection [100ms]
Size of async queue [0]

性能

  • 單線程 6000qps
  • 開啟cpu親緣性 8個線程 50000qps

配置

kvproxy的配置文件使用的時ini格式。默認文件在安裝目錄的etc文件夾下。文件名為 kvproxy.ini。

[kvproxy]
; 監聽的端口號
port=55669
; 開啟的線程數。在linux平臺下,如果cpu_affinity設置為on,開啟的線程數自動為cpu內核數量。
thread_count=2
; 是否開啟cpu親緣性
cpu_affinity=on
; 等待被處理的連接數
backlog=10000
; 從后端服務器讀取數據超時時間,單位 毫秒
recv_timeout=100
; 日志文件路徑,默認為安裝目錄 ./log/kvproxy.log
;log_path=/tmp/kvproxy.log
; 錯誤級別。選項有 fatal error warn info debug。
; fatal 為致命錯誤。發生致命錯誤會導致kvproxy進程退出。
; error 為請求錯誤。發生請求錯誤會導致本次請求失敗。
; warn  為請求警告。發生請求警告說明本次請求過程中出現了異常,可能請求會成功。
; info  為冗余模式。會打印出請求執行過程中的一些冗余信息。
; debug 為調試模式。會打印出請求過程中的一些調試信息。
log_level=warn
; 擴展安裝路徑。默認為安裝目錄下的 ./ext
;ext_path=../ext
; 一次請求過程中發生或者接收數據的最大尺寸。單位為M(兆)。如果數據超過指定大小,會導致請求失敗。
; 如,你set或者get一個2M的數據,這個值就應該設置為2或者更大。
max_packet=1
; 失敗次數超過指定閾值,則自動把有問題的后端服務器給摘除。
failover_threshold = 2
; 檢測是否有后端服務器的失敗次數大于指定閾值的頻率。單位為秒。
failover_interval = 2
; 異步同步隊列大小。看情況設置,不要設置太大。
async_size = 50000

;;;;;;;;;;;;;;;
;擴展部分設置 ;
;;;;;;;;;;;;;;;

; 擴展名稱
[memcached]
; 擴展文件名。
extension=memcached.so
; 設置默認后端服務器組。
hosts=master
; 設置備份服務器組。所有的寫操作命令都會同步到此服務器組一份。如果未設置,將不進行數據的同步或者異步復制。
;hosts_backup=read
; 設置讀服務器組。所有的數據讀取都從此服務器組讀取。用于實現讀寫分離。
hosts_read=master
; 同步數據復制前綴符號。默認的數據復制為異步復制。如果想數據復制為同步復制,可以把key的前綴設置為指定字符串。
sync_str = "+" 
; 使用的協議類型 binary 二級制協議  text 文本協議
proto = binary

;;;;;;;;;;;;;;;;
; 服務器組設置 ;
;;;;;;;;;;;;;;;;

; 服務器組名
[master]
; ip : 端口號 = "在服務器組中的標示數字id : 權重"
; 同一組中每個后端服務器的標示數字id不能重復 
127.0.0.1:11211="1:50"

[read]
127.0.0.1:11212="1:50"

項目主頁:http://www.baiduhome.net/lib/view/home/1426162733326

 本文由用戶 ew45 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!