Tokyo Cabinet 是日本人 平林幹雄 開發的一款 DBM 資料庫,該資料庫讀寫非常快,哈希模式寫入100萬條資料隻需0.643秒,讀取100萬條資料隻需0.773秒,是 Berkeley DB 等 DBM 的幾倍, 反正是相當的快。
而Tokyo Tyrant(翻譯成中文是:東京暴君)則是在Tokyo Cabinet上封裝了網絡應用接口,用于提供網絡服務等一系列功能, 支援memcached協定和http協定 。是以我們可以友善地使用memcached java用戶端直接通路,唯一需要注意的是,tt是持久化的,并且value隻支援String類型。
接觸TT還不到一年,之前使用的是memcachedb,memcachedb在高并發寫入和讀取的時候性能并不太理想,于是嘗試了下TT。在同等硬體條件下,tt性能比memcachedb提升還是非常明顯的 , 千萬級的資料量下面達到了讀寫4k+/s。
一些優化總結:
1. 硬碟讀寫速度要快,我們采用的是SAS硬碟,15000轉的。
2. 通過bnum和xmsiz參數來把硬碟資料緩存或映射到記憶體加快IO,rcnum來指定緩存最近通路的記錄數。條件允許的話,xmsiz的值大于資料庫檔案大小。
3. 相應地,記憶體要夠大。
4. 每天做完全備份, 通過tt提供的工具。
tt的應用場景:
1. 存儲版本資訊,存儲實時浏覽次數等小顆粒實時動态資料
2. 作為持久化緩存,用于減輕關系型資料庫負載。
tt的叢集方式:
1. 參考memcached叢集方式,由用戶端實作叢集。
2. 采用主從模式的叢集方式,1台master,多台slave,友善水準擴充。
每種方式都有優點和缺點,主從模式受限于master的承受能力,隻能擴充讀,寫就不能無限擴充。
用戶端叢集方式伸縮性不好,加減機器都比較難,一旦某一台服務down了,會導緻局部資料失效 ,是以可能需要針對每一各節點做熱備(互為主從方式)。
技術上沒有十全十美的方案,最簡單的才是最合适,如何選擇就看實際應用場景了。