介紹:
Starling是一個支持MemCache協(xié)議的輕量級持久化服務器。Starling是讓創(chuàng)建網(wǎng)絡(luò)訪問隊列或者多個隊列異常簡單,也就是說多點和多臺
機器間的異步工作進程。它是著名微博客網(wǎng)站Twitter開發(fā)用來處理大量的隊列消息,以及保持服務的響應。Starling已經(jīng)在生產(chǎn)環(huán)境中使用,不僅
是Twitter在使用,F(xiàn)iveRuns同樣在使用。FiveRuns甚至還根據(jù)自己的應用做了改進 ,他們認為網(wǎng)站速度快了很多. 這是一個支持memcache協(xié)議的輕量級持久化服務器,因此使用php/perl/ruby/java等多種客戶端都沒問題,可以將較慢的處理邏輯通過消息隊列放在后臺處理,同時也支持多點分布式處理。 由于starling是目前twitter在生產(chǎn)環(huán)境中運行的,經(jīng)過實踐檢驗過,穩(wěn)定性應該不成問題。
安裝: 1.安裝linux下的開發(fā)工具包,最好使用red hat的添加刪除程序安裝. (1)在可視化窗口下載打開"添加刪除程序",找到"開發(fā)->開發(fā)工具"打鉤,更新.插入 對應的linux安裝盤. 2.安裝ruby和ruby gem (1)安裝錢的準備 檢查系統(tǒng)是否已經(jīng)安裝了 ruby, #rpm -qa | egrep '(ruby)|(irb)' 如果已安裝,而且不是你所要的版本,則需要先卸載她,如, #rpm -e ruby-docs-1.8.1-7.EL4.2 \ ruby-1.8.1-7.EL4.2 \ irb-1.8.1-7.EL4.2 \ ruby-libs-1.8.1-7.EL4.2 \ ruby-mode-1.8.1-7.EL4.2 \ ruby-tcltk-1.8.1-7.EL4.2 \ ruby-devel-1.8.1-7.EL4.2
(2)安裝 Ruby 假設(shè) Ruby 安裝到 /usr/local/ruby #mkdir /usr/local/ruby #tar -zxvf ruby-1.8.4.tar.gz #cd ruby-1.8.4 #./configure --prefix=/usr/local/ruby #make #make install
(3)設(shè)置路徑 #vi /etc/profile 在該文件中加入, RUBY_HOME=/usr/local/ruby PATH=$PATH:$RUBY_HOME/bin export RUBY_HOME PATH
(4)檢查是否安裝成功 重新登錄, #ruby -v 如果能顯示 ruby 的版本信息(ruby 1.8.4 (2005-12-24) [i686-linux]),則說明已安裝成功。
(5)安裝 Ruby Gems #tar -zxvf rubygems-0.9.0.tgz #cd rubygems-0.9.0 #ruby setup.rb
(6)檢查是否安裝成功 #gem -v 如果能顯示 gem 的版本信息(0.9.0),則說明已安裝成功。 3.安裝和運行 Starling (1)輸入gem install memcache-client starling命令,自動安裝starling. (2)輸入#starling --help檢查是否安裝成功,輸出幫助信息及安裝成功. (3)啟動Starling #starling -h 0.0.0.0 -d -p 22122 #netstat –lnp
編寫Java客戶端程序: java客戶端將使用,XMemcached作為memcache的client. XMemcached是一個基于java nio的memcached客戶端。具有速度快,支持分布式訪問多個memcached服務的特點. 1.下載XMemcached http://xmemcached./files/xmemcached-1.2.0-stable-include-dependencies.zip 2.把下載的zip解壓,把里面的jar包都加到一個java項目的classpath中,還需要額外增加一個log4j的包,不然會報錯. 3.寫一個放數(shù)據(jù)和一個取出數(shù)據(jù)的類 =============放數(shù)據(jù)============================ public class SetQueueTest {
/** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //連接starling //XMemcachedClient是線程安全的,可以被多線程使用 XMemcachedClient client= new XMemcachedClient("192.168.4.243", 22122); while(true){ //存儲操作 if (!client.set("hello", 0, "dennis"+System.currentTimeMillis())){ System.err.println("set error"); } else{ System.out.println("ok"); } Thread.sleep(2); } }
}
=============取數(shù)據(jù)================== public class GetQueueTest {
public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //連接starling //XMemcachedClient是線程安全的,可以被多線程使用 XMemcachedClient client= new XMemcachedClient("192.168.4.243", 22122); //存儲操作 while(true){ String name=(String)client.get("hello"); //如果隊列中已經(jīng)沒有數(shù)據(jù)了,休息一下再試 if(name==null){ Thread.sleep(5); continue; } System.out.println(name); } }
}
性能測試
這是別人用php測試的結(jié)果,僅供參考.
測試條件:
key的長度16B value的長度100B, 8個并發(fā)寫入進程 每個進程插入10,000條記錄 平均每個進程花了7秒完成寫入操作,那么照這樣計算:
10000 * 8 / 7 = 每秒寫入11428次
|