免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

Java使用starling分布式消息隊列異步處理事務...

 zybingliu 2009-11-06

介紹:
   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次

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多