TT(Tokyo Tyrant )介紹及使用

  Tokyo Cabinet 是日本人 平林幹雄 開發的一款 DBM 數據庫,該數據庫讀寫很是快,哈希模式寫入100萬條數據只需0.643秒,讀取100萬條數據只需0.773秒,是 Berkeley DB 等 DBM 的幾倍。

  Tokyo Tyrant 是由同一做者開發的 Tokyo Cabinet 數據庫網絡接口。它擁有Memcached兼容協議,也能夠經過HTTP協議進行數據交換。

  Tokyo Tyrant 加上 Tokyo Cabinet,構成了一款支持高併發的分佈式持久存儲系統,對任何原有Memcached客戶端來說,能夠將Tokyo Tyrant當作是一個Memcached,可是,它的數據是能夠持久存儲的。這一點,跟新浪的Memcachedb性質同樣。

  相比Memcachedb而言,Tokyo Tyrant具備如下優點:

  一、故障轉移:Tokyo Tyrant支持雙機互爲主輔模式,主輔庫都可讀寫,而Memcachedb目前支持相似MySQL主輔庫同步的方式實現讀寫分離,支持「主服務器可讀寫、輔助服務器只讀」模式。

  點擊在新窗口中瀏覽此圖片

  這裏使用 $memcache->addServer 而不是 $memcache->connect 去鏈接 Tokyo Tyrant 服務器,是由於當 Memcache 客戶端使用 addServer 服務器池時,是根據「crc32(key) % current_server_num」哈希算法將 key 哈希到不一樣的服務器的,PHP、C 和 python 的客戶端都是如此的算法。Memcache 客戶端的 addserver 具備故障轉移機制,當 addserver 了2臺 Memcached 服務器,而其中1臺宕機了,那麼 current_server_num 會由原先的2變成1。

  引用 memcached 官方網站和 PHP 手冊中的兩段話: 
引用
http://www.danga.com/memcached/ 
If a host goes down, the API re-maps that dead host's requests onto the servers that are available. 

http://cn.php.net/manual/zh/function.Memcache-addServer.php 
Failover may occur at any stage in any of the methods, as long as other servers are available the request the user won't notice. Any kind of socket or Memcached server level errors (except out-of-memory) may trigger the failover. Normal client errors such as adding an existing key will not trigger a failover.




  二、日誌文件體積小:Tokyo Tyrant用於主輔同步的日誌文件比較小,大約是數據庫文件的1.3倍,而Memcachedb的同步日誌文件很是大,若是不按期清理,很容易將磁盤寫滿。



  三、超大數據量下表現出色:

  點擊在新窗口中瀏覽此圖片

  可是,Tokyo Tyrant 也有缺點:在32位操做系統下,做爲 Tokyo Tyrant 後端存儲的 Tokyo Cabinet 數據庫單個文件不能超過2G,而64位操做系統則不受這一限制。因此,若是使用 Tokyo Tyrant,推薦在64位CPU、操做系統上安裝運行。



  1、安裝
  一、首先編譯安裝tokyocabinet數據庫
wget http://www.1978th.net/tokyocabinet/tokyocabinet-1.4.45.tar.gz
tar zxvf tokyocabinet-1.4.45.tar.gz
cd tokyocabinet-1.4.45/
./configure
#注:在32位Linux操做系統上編譯Tokyo cabinet,請使用./configure --enable-off64代替./configure,可使數據庫文件突破2GB的限制。
#./configure --enable-off64
make
make install
cd ../


  二、而後編譯安裝tokyotyrant
wget http://www.1978th.net/tokyotyrant/tokyotyrant-1.1.40.tar.gz
tar zxvf tokyotyrant-1.1.40.tar.gz
cd tokyotyrant-1.1.40/
./configure
make
make install
cd ../




  2、配置
  一、建立tokyotyrant數據文件存放目錄
mkdir -p /ttserver/


  二、啓動tokyotyrant的主進程(ttserver)
  (1)、單機模式
ulimit -SHn 51200
ttserver -host 127.0.0.1 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tcb#lmemb=1024#nmemb=2048#bnum=10000000


  (2)、雙機互爲主輔模式
  服務器192.168.1.91:
ulimit -SHn 51200
ttserver -host 192.168.1.91 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 91 -mhost 192.168.1.92 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tcb#lmemb=1024#nmemb=2048#bnum=10000000


  服務器192.168.1.92:
ulimit -SHn 51200
ttserver -host 192.168.1.92 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 92 -mhost 192.168.1.91 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tcb#lmemb=1024#nmemb=2048#bnum=10000000


  (3)、參數說明
  ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-uas] [-sid num] [-mhost name] [-mport num] [-rts path] [dbname] 

  -host name : 指定須要綁定的服務器域名或IP地址。默認綁定這臺服務器上的全部IP地址。
  -port num : 指定須要綁定的端口號。默認端口號爲1978 
  -thnum num : 指定線程數。默認爲8個線程。 
  -tout num : 指定每一個會話的超時時間(單位爲秒)。默認永不超時。 
  -dmn : 以守護進程方式運行。
  -pid path : 輸出進程ID到指定文件(這裏指定文件名)。
  -log path : 輸出日誌信息到指定文件(這裏指定文件名)。
  -ld : 在日誌文件中還記錄DEBUG調試信息。
  -le : 在日誌文件中僅記錄錯誤信息。
  -ulog path : 指定同步日誌文件存放路徑(這裏指定目錄名)。
  -ulim num : 指定每一個同步日誌文件的大小(例如128m)。
  -uas : 使用異步IO記錄更新日誌(使用此項會減小磁盤IO消耗,可是數據會先放在內存中,不會當即寫入磁盤,若是重啓服務器或ttserver進程被kill掉,將致使部分數據丟失。通常狀況下不建議使用)。
  -sid num : 指定服務器ID號(當使用主輔模式時,每臺ttserver須要不一樣的ID號) 
  -mhost name : 指定主輔同步模式下,主服務器的域名或IP地址。
  -mport num : 指定主輔同步模式下,主服務器的端口號。
  -rts path : 指定用來存放同步時間戳的文件名。

  若是使用的是哈希數據庫,能夠指定參數「#bnum=xxx」來提升性能。它能夠指定bucket存儲桶的數量。例如指定「#bnum=1000000」,就能夠將最新最熱的100萬條記錄緩存在內存中:
ttserver -host 127.0.0.1 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tch#bnum=1000000


  若是大量的客戶端訪問ttserver,請確保文件描述符夠用。許多服務器的默認文件描述符爲1024,能夠在啓動ttserver前使用ulimit命令提升這項值。例如:
ulimit -SHn 51200


  三、中止tokyotyrant(ttserver)
ps -ef | grep ttserver

  找到ttserver的進程號並kill,例如:
kill -TERM 2159




  3、調用
  一、任何Memcached客戶端都可直接調用tokyotyrant。

  二、還能夠經過HTTP方式調用,下面以Linux的curl命令爲例,介紹如何操做tokyotyrant:
  (1)、寫數據,將數據「value」寫入到「key」中:
curl -X PUT http://127.0.0.1:11211/key -d "value"


  (2)、讀數據,讀取「key」中數據:


  (3)、刪數據,刪除「key」:
curl -X DELETE http://127.0.0.1:11211/key
相關文章
相關標籤/搜索