<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    成就夢想

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      21 隨筆 :: 22 文章 :: 6 評論 :: 0 Trackbacks

    2017年3月1日 #



    1,nagios install 參考官方 

    https://assets.nagios.com/downloads/nagioscore/docs/Installing_Nagios_Core_From_Source.pdf#_ga=1.136427443.2075387674.1488266439

    上面只是參考,請自行安裝最新版本的nagios,并自行忽略掉Apache的配置,我們來配置nginx支持nagios。

    2,理解什么是cgi。fastcgi。寫的非常棒。要多棒有多棒。

    參考文章:http://www.cnblogs.com/skynet/p/4173450.html





    3,上文理解了,就好辦了。我們的目的就是讓nginx支持執行我們nagios下的cgi。nginx基于安全性等考慮不讓直接執行cgi,但支持fastcgi,所以我們要用到一個fastcig的warp來封裝cgi

    github上開源的項目 fcgiwarp https://github.com/gnosek/fcgiwrap


    git clone https://github.com/gnosek/fcgiwrap.git

    autoreconf -i
    ./configure
    make
    make instal
    ps:
    如果aotoreconf執行不了,請自行安裝autoreconf。


    然后就是怎么使用fcgiwarp ,作者提到了2種使用方法(針對這2種方法在nginx配置稍微不同):

    usage

    Most probably you will want fcgiwrap be launched by www-servers/spawn-fcgi. Or you could use the author's Perl launcher - see the homepage for that.



    第1種是作者自己寫的perl 的啟動器:作者說在他的主頁呢。。。。copy一下放在下面
    #!/usr/bin/perl

    use strict;
    use warnings FATAL => qw( all );

    use IO::Socket::UNIX;

    my $bin_path = '/usr/local/bin/fcgiwrap';
    my $socket_path = $ARGV[0] || '/tmp/cgi.sock';
    my $num_children = $ARGV[1] || 1;

    close STDIN;

    unlink $socket_path;
    my $socket = IO::Socket::UNIX->new(
        Local => $socket_path,
        Listen => 100,
    );

    die "Cannot create socket at $socket_path: $!\n" unless $socket;

    for (1 .. $num_children) {
        my $pid = fork;
        die "Cannot fork: $!" unless defined $pid;
        next if $pid;

        exec $bin_path;
        die "Failed to exec $bin_path: $!\n";
    }

    我們把這個文件保存成 /etc/init.d/fcgiwrap 做成服務執行即可。


    第二種方法是用fastcgi的進程管理器來啟動。

    還是GitHub上開源的牛逼項目
    spawn-fcgi   https://github.com/lighttpd/spawn-fcgi

    我們寫一個啟動腳本 

     

    spawn-fcgi -f /usr/local/sbin/fcgiwrap -p 9009                       這個端口自己根據機器的端口使用情況自己來寫



    最后貼一個nginx簡單的配置。

    vim /etc/nginx/conf.d/nagios.conf  #根據自己的nginx啟動位置自行調整


    server {
            server_name nagios.tony.com;  #自己的域名
            access_log /var/log/nginx/nagios-access.log;
            error_log /var/log/nginx/nagios-error.log; #日志位置,發現nagios不能在瀏覽器展示,請看日志,看日志,

    #       auth_basic "Private";
    #
           auth_basic_user_file /etc/nagios/htpasswd.users;   #把認證先去掉。跑起來在說在。 要把 /usr/local/nagios/etc/cgi.cfg  中的use_ssl_authentication=0


            root /usr/local/nagios/share; #/usr/local/nagios   nagios安裝目錄
            index index.php index.html;

        #php 的配置,請自行去解決。
             location ~ \.php$ {  
                include /etc/nginx/fastcgi_params;
                fastcgi_pass  127.0.0.1:9000; #php-fpm 
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
                                        }
            location /nagios {
                 alias /usr/local/nagios/share;
                                    }

             location ~ \.cgi$ {
                    root /usr/local/nagios/sbin;
                    rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
                    include /etc/nginx/fastcgi_params;

                    fastcgi_param AUTH_USER $remote_user;
                    fastcgi_param REMOTE_USER $remote_user;
                    fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin/$fastcgi_script_name;
                    fastcgi_pass  unix:/tmp/cgi.sock; #這是上面第一種方式的配置。
                    #fastcgi_pass  127.0.0.1:9009; #這是上面第二種方式的配置。
                                    }
    }
    posted @ 2017-03-01 11:35 iamct 閱讀(234) | 評論 (0)編輯 收藏

    2012年6月14日 #

         摘要:   閱讀全文
    posted @ 2012-06-14 17:20 iamct 閱讀(267) | 評論 (0)編輯 收藏

         摘要: DMA(Direct Memory Access,直接內存存取) 在實現DMA傳輸時,是由DMA控制器直接掌管總線,因此,存在著一個總線控制權轉移問題。即DMA傳輸前,CPU要把總線控制權交給DMA控制器,而在結束DMA傳輸后,DMA控制器應立即把總線控制權再交回給CPU。一個完整的DMA傳輸過程必須經過下面的4個步驟:1,DMA請求2,DMA響應3,DMA傳輸4,DMA結束DMA與cpu 使用內...  閱讀全文
    posted @ 2012-06-14 11:49 iamct 閱讀(344) | 評論 (0)編輯 收藏

    2012年5月26日 #

    轉自:http://article.yeeyan.org/view/58906/257928

    許多人用shell腳本完成一些簡單任務,而且變成了他們生命的一部分。不幸的是,shell腳本在運行異常時會受到非常大的影響。在寫腳本時將這類問題最小化是十分必要的。本文中我將介紹一些讓bash腳本變得健壯的技術。

    使用set -u

    你因為沒有對變量初始化而使腳本崩潰過多少次?對于我來說,很多次。

    chroot=$1 ... rm -rf $chroot/usr/share/doc
    如果上面的代碼你沒有給參數就運行,你不會僅僅刪除掉chroot中的文檔,而是將系統的所有文檔都刪除。那你應該做些什么呢?好在bash提供了set -u,當你使用未初始化的變量時,讓bash自動退出。你也可以使用可讀性更強一點的set -o nounset

    david% bash /tmp/shrink-chroot.sh

    $chroot=

    david% bash -u /tmp/shrink-chroot.sh

    /tmp/shrink-chroot.sh: line 3: $1: unbound variable

    david%

    使用set -e

    你寫的每一個腳本的開始都應該包含set -e。這告訴bash一但有任何一個語句返回非真的值,則退出bash。使用-e的好處是避免錯誤滾雪球般的變成嚴重錯誤,能盡早的捕獲錯誤。更加可讀的版本:set -o errexit

    使用-e把你從檢查錯誤中解放出來。如果你忘記了檢查,bash會替你做這件事。不過你也沒有辦法使用$?來獲取命令執行狀態了,因為bash無法獲得任何非0的返回值。你可以使用另一種結構:

    command

    if [ "$?"-ne 0]; then echo "command failed"; exit 1; fi

    可以替換成:

    command || { echo "command failed"; exit 1; }

    或者使用:

    if ! command; then echo "command failed"; exit 1; fi

    如果你必須使用返回非0值的命令,或者你對返回值并不感興趣呢?你可以使用 command || true ,或者你有一段很長的代碼,你可以暫時關閉錯誤檢查功能,不過我建議你謹慎使用。

    set +e

    command1

    command2

    set -e

    相關文檔指出,bash默認返回管道中最后一個命令的值,也許是你不想要的那個。比如執行 false | true 將會被認為命令成功執行。如果你想讓這樣的命令被認為是執行失敗,可以使用 set -o pipefail

    程序防御 - 考慮意料之外的事

    你的腳本也許會被放到“意外”的賬戶下運行,像缺少文件或者目錄沒有被創建等情況。你可以做一些預防這些錯誤事情。比如,當你創建一個目錄后,如果父目錄不存在,mkdir 命令會返回一個錯誤。如果你創建目錄時給mkdir命令加上-p選項,它會在創建需要的目錄前,把需要的父目錄創建出來。另一個例子是 rm 命令。如果你要刪除一個不存在的文件,它會“吐槽”并且你的腳本會停止工作。(因為你使用了-e選項,對吧?)你可以使用-f選項來解決這個問題,在文件不存在的時候讓腳本繼續工作。

    準備好處理文件名中的空格

    有些人從在文件名或者命令行參數中使用空格,你需要在編寫腳本時時刻記得這件事。你需要時刻記得用引號包圍變量。

    if [ $filename = "foo" ];

    $filename變量包含空格時就會掛掉。可以這樣解決:

    if [ "$filename" = "foo" ];

    使用$@變量時,你也需要使用引號,因為空格隔開的兩個參數會被解釋成兩個獨立的部分。

    david% foo() { for i in $@; do echo $i; done }; foo bar "baz quux"

    bar

    baz

    quux

    david% foo() { for i in "$@"; do echo $i; done }; foo bar "baz quux"

    bar

    baz quux

    我沒有想到任何不能使用"$@"的時候,所以當你有疑問的時候,使用引號就沒有錯誤。

    如果你同時使用find和xargs,你應該使用 -print0 來讓字符分割文件名,而不是換行符分割。

    david% touch "foo bar"

    david% find | xargs ls

    ls: ./foo: No such file or directory

    ls: bar: No such file or directory

    david% find -print0 | xargs -0 ls

    ./foo bar

    設置的陷阱

    當你編寫的腳本掛掉后,文件系統處于未知狀態。比如鎖文件狀態、臨時文件狀態或者更新了一個文件后在更新下一個文件前掛掉。如果你能解決這些問題,無論是 刪除鎖文件,又或者在腳本遇到問題時回滾到已知狀態,你都是非常棒的。幸運的是,bash提供了一種方法,當bash接收到一個UNIX信號時,運行一個 命令或者一個函數。可以使用trap命令。

    trap command signal [signal ...]

    你可以鏈接多個信號(列表可以使用kill -l獲得),但是為了清理殘局,我們只使用其中的三個:INTTERMEXIT。你可以使用-as來讓traps恢復到初始狀態。

    信號描述

    INT

    Interrupt - 當有人使用Ctrl-C終止腳本時被觸發

    TERM

    Terminate - 當有人使用kill殺死腳本進程時被觸發

    EXIT

    Exit - 這是一個偽信號,當腳本正常退出或者set -e后因為出錯而退出時被觸發





    當你使用鎖文件時,可以這樣寫:

    if [ ! -e $lockfile ]; then

    touch $lockfile

    critical-section

    rm $lockfile

    else

    echo "critical-section is already running"

    fi

    當最重要的部分(critical-section)正在運行時,如果殺死了腳本進程,會發生什么呢?鎖文件會被扔在那,而且你的腳本在它被刪除以前再也不會運行了。解決方法:

    if [ ! -e $lockfile ]; then

    trap " rm -f $lockfile; exit" INT TERM EXIT

    touch $lockfile

    critical-section

    rm $lockfile

    trap - INT TERM EXIT

    else

    echo "critical-section is already running"

    fi

    現在當你殺死進程時,鎖文件一同被刪除。注意在trap命令中明確地退出了腳本,否則腳本會繼續執行trap后面的命令。

    竟態條件 (wikipedia)

    在上面鎖文件的例子中,有一個竟態條件是不得不指出的,它存在于判斷鎖文件和創建鎖文件之間。一個可行的解決方法是使用IO重定向和bash的noclobber(wikipedia)模式,重定向到不存在的文件。我們可以這么做:

    if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null;

    then

    trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT

    critical-section

    rm -f "$lockfile"

    trap - INT TERM EXIT

    else

    echo "Failed to acquire lockfile: $lockfile"

    echo "held by $(cat $lockfile)"

    fi

    更復雜一點兒的問題是你要更新一大堆文件,當它們更新過程中出現問題時,你是否能讓腳本掛得更加優雅一些。你想確認那些正確更新了,哪些根本沒有變化。比如你需要一個添加用戶的腳本。

    add_to_passwd $user

    cp -a /etc/skel /home/$user

    chown $user /home/$user -R

    當磁盤空間不足或者進程中途被殺死,這個腳本就會出現問題。在這種情況下,你也許希望用戶賬戶不存在,而且他的文件也應該被刪除。

    rollback() {

    del_from_passwd $user

    if [ -e /home/$user ]; then

    rm -rf /home/$user

    fi

    exit

    }


    trap rollback INT TERM EXIT

    add_to_passwd $user


    cp -a /etc/skel /home/$user

    chown $user /home/$user -R

    trap - INT TERM EXIT

    在腳本最后需要使用trap關閉rollback調用,否則當腳本正常退出的時候rollback將會被調用,那么腳本等于什么都沒做。

    保持原子化

    又是你需要一次更新目錄中的一大堆文件,比如你需要將URL重寫到另一個網站的域名。你也許會寫:

    for file in $(find /var/www -type f -name "*.html"); do

    perl -pi -e 's/www.example.net/www.example.com/' $file

    done

    如果修改到一半是腳本出現問題,一部分使用www.example.com,而另一部分使用www.example.net。你可以使用備份和trap解決,但在升級過程中你的網站URL是不一致的。

    解決方法是將這個改變做成一個原子操作。先對數據做一個副本,在副本中更新URL,再用副本替換掉現在工作的版本。你需要確認副本和工作版本目錄在同一個磁盤分區上,這樣你就可以利用Linux系統的優勢,它移動目錄僅僅是更新目錄指向的inode節點。

    cp -a /var/www /var/www-tmp

    for file in $(find /var/www-tmp -type -f -name "*.html"); do

    perl -pi -e 's/www.example.net/www.example.com/' $file

    done

    mv /var/www /var/www-old

    mv /var/www-tmp /var/www

    這意味著如果更新過程出問題,線上系統不會受影響。線上系統受影響的時間降低為兩次mv操作的時間,這個時間非常短,因為文件系統僅更新inode而不用真正的復制所有的數據。

    這種技術的缺點是你需要兩倍的磁盤空間,而且那些長時間打開文件的進程需要比較長的時間才能升級到新文件版本,建議更新完成后重新啟動這些進程。對于 apache服務器來說這不是問題,因為它每次都重新打開文件。你可以使用lsof命令查看當前正打開的文件。優勢是你有了一個先前的備份,當你需要還原 時,它就派上用場了。

    posted @ 2012-05-26 09:37 iamct 閱讀(333) | 評論 (0)編輯 收藏

    2012年4月26日 #

    時間久了,會忘記命令。工具,備忘用。
    將一個jar包安裝成maven的pom樣式,使用。

    mvn install:install-file -DgroupId=com.bea.xml -DartifactId=jsr173-ri -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file]
    posted @ 2012-04-26 17:16 iamct 閱讀(2131) | 評論 (0)編輯 收藏

    2012年4月25日 #

    Windows下調用程序

    Process proc =Runtime.getRuntime().exec("exefile");

    Linux下調用程序就要改成下面的格式

    Process proc =Runtime.getRuntime().exec("./exefile");

    Windows下調用系統命令

    String [] cmd={"cmd","/C","dir"};
    Process proc =Runtime.getRuntime().exec(cmd);

    Linux下調用系統命令就要改成下面的格式

    String [] cmd={"/bin/sh","-c","ln -s exe1 exe2"};
    Process proc =Runtime.getRuntime().exec(cmd);

    Windows下調用系統命令并彈出命令行窗口

    String [] cmd={"cmd","/C","start copy exe1 exe2"};
    Process proc =Runtime.getRuntime().exec(cmd);

    Linux下調用系統命令并彈出終端窗口就要改成下面的格式

    String [] cmd={"/bin/sh","-c","xterm -e ln -s exe1 exe2"};
    Process proc =Runtime.getRuntime().exec(cmd);

    還有要設置調用程序的工作目錄就要

    Process proc =Runtime.getRuntime().exec("exeflie",null, new File("workpath"))ProcessBuilder ;


    同理:
    ProcessBuilder也可以這么使用管道 ,使用 |
        ProcessBuilder builder = new ProcessBuilder("/bin/sh","-c","ps aux |grep java");

    posted @ 2012-04-25 13:40 iamct 閱讀(3678) | 評論 (0)編輯 收藏

    2012年4月17日 #

     

    很久很久以前,有一群人,他們決定用8個可以開合的晶體管來組合成不同的狀態,以表示世界上的萬物。他們看到8個開關狀態是好的,于是他們把這稱為"字節"。

    再后來,他們又做了一些可以處理這些字節的機器,機器開動了,可以用字節來組合出很多狀態,狀態開始變來變去。他們看到這樣是好的,于是它們就這機器稱為"計算機"。



    開始計算機只在美國用。八位的字節一共可以組合出256(2的8次方)種不同的狀態。

    他們把其中的編號從0開始的32種狀態分別規定了特殊的用途,一但終端、打印機遇上約定好的這些字節被傳過來時,就要做一些約定的動作。遇上 00x10, 終端就換行,遇上0x07, 終端就向人們嘟嘟叫,例好遇上0x1b, 打印機就打印反白的字,或者終端就用彩色顯示字母。他們看到這樣很好,于是就把這些0x20以下的字節狀態稱為"控制碼"。 

    他們又把所有的空格、標點符號、數字、大小寫字母分別用連續的字節狀態表示,一直編到了第127號,這樣計算機就可以用不同字節來存儲英語的文字 了。大家看到這樣,都感覺很好,于是大家都把這個方案叫做 ANSI 的"Ascii"編碼(American Standard Code for Information Interchange,美國信息互換標準代碼)。當時世界上所有的計算機都用同樣的ASCII方案來保存英文文字。

    后來,就像建造巴比倫塔一樣,世界各地的都開始使用計算機,但是很多國家用的不是英文,他們的字母里有許多是ASCII里沒有的,為了可以在計算 機保存他們的文字,他們決定采用127號之后的空位來表示這些新的字母、符號,還加入了很多畫表格時需要用下到的橫線、豎線、交叉等形狀,一直把序號編到 了最后一個狀態255。從128到255這一頁的字符集被稱"擴展字符集"。從此之后,貪婪的人類再沒有新的狀態可以用了,美帝國主義可能沒有想到還有第 三世界國家的人們也希望可以用到計算機吧! 

    等中國人們得到計算機時,已經沒有可以利用的字節狀態來表示漢字,況且有6000多個常用漢字需要保存呢。但是這難不倒智慧的中國人民,我們不客 氣地把那些127號之后的奇異符號們直接取消掉, 規定:一個小于127的字符的意義與原來相同,但兩個大于127的字符連在一起時,就表示一個漢字,前面的一個字節(他稱之為高字節)從0xA1用到 0xF7,后面一個字節(低字節)從0xA1到0xFE,這樣我們就可以組合出大約7000多個簡體漢字了。在這些編碼里,我們還把數學符號、羅馬希臘的 字母、日文的假名們都編進去了,連在 ASCII 里本來就有的數字、標點、字母都統統重新編了兩個字節長的編碼,這就是常說的"全角"字符,而原來在127號以下的那些就叫"半角"字符了。 

    中國人民看到這樣很不錯,于是就把這種漢字方案叫做 "GB2312"。GB2312 是對 ASCII 的中文擴展。

    但是中國的漢字太多了,我們很快就就發現有許多人的人名沒有辦法在這里打出來,特別是某些很會麻煩別人的國家領導人。于是我們不得不繼續把 GB2312 沒有用到的碼位找出來老實不客氣地用上。

    后來還是不夠用,于是干脆不再要求低字節一定是127號之后的內碼,只要第一個字節是大于127就固定表示這是一個漢字的開始,不管后面跟的是不 是擴展字符集里的內容。結果擴展之后的編碼方案被稱為 GBK 標準,GBK 包括了 GB2312 的所有內容,同時又增加了近20000個新的漢字(包括繁體字)和符號。 

    后來少數民族也要用電腦了,于是我們再擴展,又加了幾千個新的少數民族的字,GBK 擴成了 GB18030。從此之后,中華民族的文化就可以在計算機時代中傳承了。

    中國的程序員們看到這一系列漢字編碼的標準是好的,于是通稱他們叫做 "DBCS"(Double Byte Charecter Set 雙字節字符集)。在DBCS系列標準里,最大的特點是兩字節長的漢字字符和一字節長的英文字符并存于同一套編碼方案里,因此他們寫的程序為了支持中文處 理,必須要注意字串里的每一個字節的值,如果這個值是大于127的,那么就認為一個雙字節字符集里的字符出現了。那時候凡是受過加持,會編程的計算機僧侶 們都要每天念下面這個咒語數百遍: 

    "一個漢字算兩個英文字符!一個漢字算兩個英文字符......"



    因為當時各個國家都像中國這樣搞出一套自己的編碼標準,結果互相之間誰也不懂誰的編碼,誰也不支持別人的編碼,連大陸和臺灣這樣只相隔了150海 里,使用著同一種語言的兄弟地區,也分別采用了不同的 DBCS 編碼方案。當時的中國人想讓電腦顯示漢字,就必須裝上一個"漢字系統",專門用來處理漢字的顯示、輸入的問題,但是那個臺灣的愚昧封建人士寫的算命程序就 必須加裝另一套支持 BIG5 編碼的什么"倚天漢字系統"才可以用,裝錯了字符系統,顯示就會亂了套!這怎么辦?而且世界民族之林中還有那些一時用不上電腦的窮苦人民,他們的文字又怎 么辦?

    真是計算機的巴比倫塔命題啊!

    正在這時,大天使加百列及時出現了:一個叫 ISO (國際標誰化組織)的國際組織決定著手解決這個問題。他們采用的方法很簡單:廢了所有的地區性編碼方案,重新搞一個包括了地球上所有文化、所有字母和符號 的編碼!他們打算叫它"Universal Multiple-Octet Coded Character Set",簡稱 UCS, 俗稱 "UNICODE"。


    轉自 http://www.iteye.com/topic/351135


    posted @ 2012-04-17 20:58 iamct 閱讀(1054) | 評論 (3)編輯 收藏

    2012年1月4日 #

    項目中對于web項目 經常需要經 一些resource下的文件,打包時,移動到WEB-INF下。


    <plugin>

                    <groupId>org.apache.maven.plugins</groupId>

                    <artifactId>maven-war-plugin</artifactId>

                    <configuration>

                        <webResources>

                            <resource>

                                <targetPath>WEB-INF</targetPath>

                                <directory>src/main/resources-${package.target}</directory>

                                <includes>

                                    <include>

                                        log4j.properties

                                    </include>

                                </includes>

                            </resource>

                        </webResources>

                    </configuration>

                </plugin>
    posted @ 2012-01-04 10:57 iamct 閱讀(2931) | 評論 (0)編輯 收藏

    2011年12月22日 #

    redis 官方提供的 conf
    https://raw.github.com/antirez/redis/2.2/redis.conf
    中6中過期策略的具體方式。
    redis 中的默認的過期策略是volatile-lru 。設置方式   
    config set maxmemory-policy volatile-lru


    maxmemory-policy 六種方式
    1. volatile-lru:只對設置了過期時間的key進行LRU(默認值) 
    2. allkeys-lru : 刪除lru算法的key   
    3. volatile-random:隨機刪除即將過期key   
    4. allkeys-random:隨機刪除   
    5. volatile-ttl : 刪除即將過期的   
    6. noeviction : 永不過期,返回錯誤  
    posted @ 2011-12-22 14:50 iamct 閱讀(9634) | 評論 (0)編輯 收藏

    2011年12月14日 #

    因英語水平有限,一定有翻譯不當的情況。請大家指正。不要包容。非常感謝。
    原文鏈接:http://zookeeper.apache.org/

    阿帕奇zookeeper的目的是開發和維護一個開源的,高可用的分布式協調的服務。

    什么是zookeeper?


    zookeeper 是一個集中式的服務用來維護配置信息,統一命名,提供分布式的同步和提供集群管理。

    所有的這些種類的服務被用在一些或其他形式的分布式應用中。每次這些服務的實現都伴隨著不可避免的修復bug,解決競爭條件等大量的工作。
    因為這些服務實現的難,應用程序最初通常吝嗇對他們,這導致了他們在變化面前非常脆弱和難于管理。即使實現正確了,當應用部署的時候,這些服務不同的實現導致了管理的復雜性。
    更好的了解學習zookeeper ZooKeeper Wiki. (翻譯的鏈接)

    入門指南

    Start by installing ZooKeeper on a single machine or a very small cluster.

    從單機安裝zookeeper或者安裝一個zookeeper的集群開始 

       1.讀這個文檔學習了解zookeeper

       2.下載zookeeper


    1. Learn about ZooKeeper by reading the documentation.
    2. Download ZooKeeper from the release page.

    進階


    zookeeper是一個在apache軟件基金會下的一個開源項目。我們鼓勵你嘗試了解項目并貢獻你的專業知識。下面是一些鏈接

    1. See our How to Contribute to ZooKeeper page.
    2. Give us feedback: What can we do better?
    3. Join the mailing list: Meet the community.



    原文

    Welcome to Apache ZooKeeper™

    Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.

    What is ZooKeeper?

    ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or another by distributed applications. Each time they are implemented there is a lot of work that goes into fixing the bugs and race conditions that are inevitable. Because of the difficulty of implementing these kinds of services, applications initially usually skimp on them ,which make them brittle in the presence of change and difficult to manage. Even when done correctly, different implementations of these services lead to management complexity when the applications are deployed.

    Learn more about ZooKeeper on the ZooKeeper Wiki.

    Getting Started

    Start by installing ZooKeeper on a single machine or a very small cluster.

    1. Learn about ZooKeeper by reading the documentation.
    2. Download ZooKeeper from the release page.

    Getting Involved

    Apache ZooKeeper is an open source volunteer project under the Apache Software Foundation. We encourage you to learn about the project and contribute your expertise. Here are some starter links:

    1. See our How to Contribute to ZooKeeper page.
    2. Give us feedback: What can we do better?
    3. Join the mailing list: Meet the community.

     


    posted @ 2011-12-14 00:26 iamct 閱讀(655) | 評論 (0)編輯 收藏

    僅列出標題  下一頁
    主站蜘蛛池模板: 亚洲综合一区无码精品| 亚洲午夜福利在线观看| 亚洲噜噜噜噜噜影院在线播放| a毛片免费全部在线播放**| 国产精品亚洲综合一区| 国产特黄特色的大片观看免费视频| 亚洲免费无码在线| 国产免费AV片在线观看播放| 亚洲国产一成人久久精品| 久久国产乱子伦精品免费看| 亚洲资源在线视频| 成人免费在线观看网站| 久久精品国产亚洲AV| 亚洲免费视频一区二区三区| 99麻豆久久久国产精品免费| 亚洲天堂一区二区| 日韩毛片免费无码无毒视频观看| 亚洲а∨精品天堂在线| 亚洲Av无码乱码在线播放| 国产精品网站在线观看免费传媒 | 国产91精品一区二区麻豆亚洲 | 亚洲AV综合色区无码一二三区| 日韩免费a级在线观看| 全部在线播放免费毛片| 亚洲精品卡2卡3卡4卡5卡区| 免费A级毛片无码A∨ | 亚洲av中文无码乱人伦在线r▽ | 亚洲人成在线播放| 国产精品免费视频播放器| 国产免费AV片在线观看播放| 自怕偷自怕亚洲精品| 日韩高清在线免费观看| 成人无码区免费A∨直播| 亚洲日本在线播放| 亚洲精品国产福利一二区| 久操视频免费观看| 亚洲爆乳成av人在线视菜奈实| 亚洲午夜久久久久久久久电影网| 青娱乐免费在线视频| 亚洲免费视频一区二区三区| 精品亚洲成a人片在线观看少妇 |