TokyoTyrant

一個可持久化數據的,好處是速度不錯,而且大至兼容Memcached的文本協定,客戶端可以繼續使用SpyMemcached。壞處是只是大致兼容,像Expired Time,CheckAndSet這些重要的原語都不支持,而且在可擴展性上沒什麼想像空間,和傳統資料庫一樣的Active-Active replication。

Anyway看了一圈最後還是選了它。

基本介紹

  • 中文名:TokyoTyrant
  • 基於:SpyMemcached客戶端
  • 形式:兼容Memcached的文本協定
  •  壞處:大致兼容
客戶端,伺服器,HQ監控,後續演示,

客戶端

在modules/extension項目封裝了基於SpyMemcached客戶端,禁止了一些TT不支持的特性如Binary協定,Expired Time,CheckAndSet語句,而且實現了一個spy client池--對Memcached,一個spy client單執行緒已足夠,基於SpyMemcached客戶端,禁止了一些TT不支持的特性如Binary協定,Expired Time,CheckAndSet語句,而且實現了一個spy client池--對Memcached,一個spy client單執行緒已足夠,而對TT則必須使用池。而對TT則必須使用池。

伺服器

1.在servers/tokyotyrant中,演示了生產環境active-active HA模式與測試環境單機版本兩種啟動腳本。
生產環境腳本在原有ttservctrl的基礎上作了如下修改:
打開了ulogdir,ulimsiz,sid(兩台server 必須不一樣),mhost(直接填寫對方的IP或用相同的host名字然後在/etc/hosts中設定對方的IP),mport ,rtsfile 這幾個HA 同步複製相關的選項。 在cmd中添加-thnum 64 (32執行緒,默認為8, 和memcached不一樣,此處加大執行緒數能明顯提高性能),-uas(異步寫日誌) -le(日誌只記錄錯誤信息)的參數 在dbname中設定參數:xmsiz=2147483648 (用mmap映射2G檔案內容到記憶體),bnum=1000000(桶數量從1M增加到10M,假設TT中有大約10M數據) 在dbname中設定參數: opts=ld,使用64位地址存儲大於2G的數據,使用Deflate encoding以Page為單位進行壓縮(如果page內的數據內容長得有點像就會得到較高的壓縮率) 在dbname中設定參數:dfunit=8, 記錄被刪除後會回收硬碟空間, 否則硬碟空間會嘩嘩的不停往上漲, 直到你手工執行tcrmgr optimized localhost為止. 測試環境腳本等於原來的ttservctrl.
2.一般採用默認的casket.tch, hash database, 如果需要進行較多的forward match操作,且主鍵的分布有一定規律性而不是完全隨機,可考慮使用casket.tcb -- btree database, 但在大數據量下讀取單條數據的性能會下降,Hash與BTree算法的天然差異決定了。
3.在雙機複製環境下,產生的ulog檔案非常巨大,需要定期進行清理。
4.如果數據被頻繁增刪,casket.tch檔案會越來越大,需要執行tcrmgr optimize localhost來減肥。
5.看數據檔案的大小不能用 du -sh *,用ls -lh 吧,那才是真實的.

HQ監控

在servers/hq中,增加了tokyotyrant -plugin.jar,在原有memcached-plugin.jar的基礎上,對tokyotyrant實際支持的輸出值進行了微調。
原理都是telnet 1978連線埠,執行status命令。

後續演示

在下個版本,將會演示TT的一個很重要的私有協定--PrefixMatch,找出逾時對象就靠它了,而且會擴展JMemcached支持該原語以方便測試用例編寫與Windows上的開發。
<!---->

相關詞條

熱門詞條

聯絡我們