一個KV類型數據庫的代理框架:kvproxy
kvproxy
一個KV類型數據庫的代理框架。可以通過編寫擴展(so動態庫)的方式增加對指定協議的支持。默認已經支持memcached的二進制協議和文本協議。
特性
- 快速
- 輕量級
- 支持讀寫分離
- 支持數據的同步和異步復制
- 支持一致性哈希
- 支持failover機制。后端服務不可用時,自動摘除。
- 提供ini格式的配置文件
- 和后端服務器保持持久化連接
- 多線程模式,linux平臺下支持cpu親緣性
- 良好的協議擴展性。
- 默認支持memcached的二進制協議和文本協議
文檔
安裝
$ 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"
本文由用戶 ew45 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!