跨平台輕量級redis、ssdbProxy 伺服器(C++ 11編寫)

來源:互聯網
上載者:User

標籤:

dbproxy 是我業餘採用C++11編寫的跨平台Proxy 伺服器(並使用lua和自己的網路程式庫),以擴充系統負載,同時使用多個後端資料庫,後端資料庫支援redis和ssdb。

需要由使用者自己編寫lua指令碼控制sharding。測試效率比codis略高,且佔用更少的CPU和記憶體。

 

下面是github上的readme,我直接拷貝下來:

介紹

dbproxy是一個採用C++11編寫的Proxy 伺服器,支援redis和 ssdb資料庫。 其主要用於擴容和提高系統負載。使用lua控制sharding,把不同的key-value映射到不同的後端redis或ssdb伺服器。

構建

dbproxy支援windwos和linux。

  • windows:開啟根目錄的DBProxy.sln編譯即可。
  • linux:
    • 1 : 在項目根目錄執行 cd 3rdparty/luasrc/src/ 命令進入lua src目錄,然後執行 make generic 構建liblua.so
    • 2 : 回到項目根目錄執行 cp 3rdparty/luasrc/src/liblua.so . 將liblua.so拷貝到目前的目錄。
    • 3 : 繼續在根目錄下執行 make server 構建 dbserver 即可。
    • 4 :直接運行 ./dbserver 即啟動Proxy 伺服器。
設定檔

dbproxy的設定檔是Config.lua 其ProxyConfigbackendskey配置後端伺服器列表,其中的sharding_function指示sharding函數。 作為樣本,test_sharding就是被指定的sharding函數,其根據key參數,返回對應的伺服器號,這裡返回0,意思是將key映射到127.0.0.1 : 6379這個伺服器。

 

redis或ssdb使用Proxy 伺服器跟使用redis 或ssdb幾乎沒有區別,使用任意的redis或ssdb用戶端均可,代碼不必做調整,只需要把ip和port指向Proxy 伺服器的地址即可。

補充

目前dbproxy只作為代理映射,不包含讀寫分離以及額外緩衝,也不解決分布式等問題。 當然其伺服器C++代碼主體並不涉及任何sharding方案,必須由使用者自己在Config.lua裡自己實現sharding函數 (當然,也可以從網上找現成的,譬如lua版的一致性hash lua-consistent-hash)

感謝

一定程度上借鑒了redis-shatter和codis。

 

後續:

效率上還能進一步提升和最佳化,感謝大家嘗試,提出意見。

跨平台輕量級redis、ssdbProxy 伺服器(C++ 11編寫)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.