天天看點

SSDB:高性能資料庫伺服器

ssdb是一個開源的高性能資料庫伺服器, 使用google leveldb作為存儲引擎, 支援t級别的資料, 同時支援類似redis中的zset和hash等資料結構, 在同時需求高性能和大資料的條件下, 作為redis的替代方案.

因為ssdb的最初目的是替代redis, 是以ssdb會經常和redis進行比較. 我們知道, redis是經常的”主-從”架構, 雖然可以得到負載均衡以及資料跨地域備份的功能, 但無法實作高可用性. 考慮這種情況, redis的主和從分别在兩個idc機房, 當主所在的機房出現故障時, 整個服務其實就相當于停止了. 因為所有寫操作都失敗, 而應用一般不會實作自動降級服務.

ssdb 被開發和開源出來後, 已經在生産環境經受了3個季度的考驗,ssdb最先在”it牛人部落格聚合網站“進行嘗試應用, 接着在360遊戲部門得到大規模應用, 目前支撐的資料量已經達到數百g. 這些應用最初是使用redis的, 遷移到ssdb的成本非常低, 涉及的代碼改動極小.

安裝

ssdb 的建議安裝⽅方式是源碼編譯安裝, 建議運⾏行環境是主流 linux 發⾏行版. 遠端 ssh 登入你的伺服器, 然後⽤用下⾯面的指令下載下傳, 編譯, 安裝和運⾏行:

ssdb 預設安裝在 /usr/local/ssdb ⺫⽬目錄下. ssdb-server 是伺服器的程式, ssdb-cli 是指令⾏行用戶端.

ssdb 附帶的 ssdb.conf 你不用修改便可以使用. 如果你要高度定制, 還是需要修改一些配置的. 下面做介紹. ssdb 的配置檔案是一種層級 key-value 的靜态配置檔案, 通過一個 tab 縮進來表示層級關系. 以 ‘#’ 号開始的行是注釋. 标準的配置檔案如下:

work_dir: ssdb-server 的工作目錄, 啟動後, 會在這個目錄下生成 data 和 meta 兩個目錄, 用來儲存 leveldb 的資料庫檔案. 這個目錄是相對于 ssdb.conf 的相對路徑, 也可以指定絕對路徑.

server: ip 和 port 指定了伺服器要監聽的 ip 和端口号. 如果 ip 是 0.0.0.0, 則表示綁定所有的 ip. 基于安全考慮, 可以将 ip 設定為 127.0.0.1, 這樣, 隻有本機可以通路了. 如果要做更嚴格的更多的網絡安全限制, 就需要依賴作業系統的 iptables.

replication: 用于指定主從同步複制. slaveof.ip, slaveof.port 表示, 本台 ssdb 伺服器将從這個目标機上同步資料(也即這個配置檔案對應的伺服器是 slave). 你可以參考 ssdb_slave.conf 的配制.

logger: 配置日志記錄. level 是日志的級别, 可以是 trace|debug|info|error. output 是日志檔案的名字, ssdb 支援日志輪轉, 在日志檔案達到一定大小後, 将 log.txt 改名, 然後建立一個新的 log.txt.

leveldb: 配置 leveldb 的參數. 你一般想要修改的是 cache_size 參數, 用于指定緩存大小. 适當的緩存可以提高讀性能, 但是過大的緩存會影響寫性能.

在使⽤用⾃自帶的 ssdb.conf 配置⽂檔案時, ssdb ⽣生成的⽇日志⽂檔案按體積進⾏行分割, 僅此⽽而已. 是以, 你需要編寫⾃自⼰己的 crontab 進⾏行⽇日志壓縮和定期清理.

如果出現伺服器掉電, kernel panic 等系統故障, 在系統重新啟動之後, 你需要⼿手動删除 ssdb的 pid ⽂檔案 ssdb.pid, 然後才能啟動 ssdb-server.另外, 你可以參考下⾯面的做法, 在系統啟動和關機時, 啟動和關閉 ssdb-server:

把⽂件儲存為 /etc/init.d/ssdb.sh(需要 root 權限), 然後執⾏:

chmod ugo+x /etc/init.d/ssdb.sh

把 ssdb加入chkconfig,并設定開機啟動。

啟動、停止的指令如下:

另外, ssdb 提供了預編譯的 windows 下的可執行安裝包, windows 使用者可以下載下傳後直接運作 ssdb-server.exe. windows 下的 ssdb 依賴 cygwin, 是以附帶了幾個 dll 檔案. 使用方式:

解壓, 然後從開始菜單中運作 cmd.exe.

在 cmd.exe 啟動後, cd ssdb-server.exe 所在的目錄.

執行 ssdb-server.exe ssdb.conf

本文來自雲栖社群合作夥伴“donet跨平台”,了解相關資訊可以關注“opendotnet”微信公衆号