目錄結構 目錄名作用 bin 存放系統腳本 conf 存放配置文件 contrib zk附加功能支持 dist-maven maven倉庫文件 docs zk文檔 lib 依賴的第三方庫 recipes 經典場景樣例代碼 src zk源碼 conf 目錄 conf 目錄用來存檔配置文件,zoo.cf ...
目錄結構
目錄名 | 作用 |
---|---|
bin | 存放系統腳本 |
conf | 存放配置文件 |
contrib | zk附加功能支持 |
dist-maven | maven倉庫文件 |
docs | zk文檔 |
lib | 依賴的第三方庫 |
recipes | 經典場景樣例代碼 |
src | zk源碼 |
conf 目錄
conf 目錄用來存檔配置文件,zoo.cfg 是核心配置文件。參數如下:
clientPort ##客戶端連接server的埠,即對外服務埠,一般設置為 2181。 dataDir ##存儲快照文件 snapshot 的目錄。預設情況下,事務日誌也會存儲在這裡。建議同時配置參數dataLogDir, 事務日誌的寫性能直接影響zk性能。 tickTime #ZK中的一個時間單元。ZK中所有時間都是以這個時間單元為基礎,進行整數倍配置的。例如,session的最小超時時間是2*tickTime。 dataLogDir #事務日誌輸出目錄。儘量給事務日誌的輸出配置單獨的磁碟或是掛載點,這將極大的提升ZK性能。(No Java system property) globalOutstandingLimit #最大請求堆積數。預設是1000。ZK運行的時候, 儘管server已經沒有空閑來處理更多的客戶端請求了,但是還是允許客戶端將請求提交到伺服器上來,以提高吞吐性能。 #當然,為了防止Server記憶體溢出,這個請求堆積數還是需要限制下的。(Java system property: zookeeper.globalOutstandingLimit.) preAllocSize #預先開闢磁碟空間,用於後續寫入事務日誌。預設是64M,每個事務日誌大小就是64M。如果ZK的快照頻率較大的話,建議適當減小這個參數。(Java system property: zookeeper.preAllocSize) snapCount #每進行 snapCount 次事務日誌輸出後,觸發一次快照(snapshot), 此時,ZK會生成一個snapshot.文件,同時創建一個新的事務日誌文件log.。 #預設是100000.(真正的代碼實現中,會進行一定的隨機數處理,以避免所有伺服器在同一時間進行快照而影響性能)(Java system property: zookeeper.snapCount) traceFile #用於記錄所有請求的log,一般調試過程中可以使用,但是生產環境不建議使用,會嚴重影響性能。(Java system property:? requestTraceFile) maxClientCnxns #單個客戶端與單台伺服器之間的連接數的限制,是ip級別的,預設是60,如果設置為0,那麼表明不作任何限制。請註意這個限制的使用範圍,僅僅是單台客戶端機器與單台ZK伺服器之間的連接數限制,不是針對指定客戶端IP,也不是ZK集群的連接數限制,也不是單台ZK對所有客戶端的連接數限制。 clientPortAddress #對於多網卡的機器,可以為每個IP指定不同的監聽埠。預設情況是所有IP都監聽 clientPort指定的埠。 New in 3.3.0 minSessionTimeoutmaxSessionTimeout #Session超時時間限制,如果客戶端設置的超時時間不在這個範圍,那麼會被強制設置為最大或最小時間。預設的Session超時時間是在2 * tickTime ~ 20 * tickTime 這個範圍 New in 3.3.0 fsync.warningthresholdms #事務日誌輸出時,如果調用fsync方法超過指定的超時時間,那麼會在日誌中輸出警告信息。預設是1000ms。(Java system property: fsync.warningthresholdms**) **New in 3.3.4 autopurge.purgeInterval #3.4.0及之後版本,ZK提供了自動清理事務日誌和快照文件的功能,這個參數指定了清理頻率,單位是小時,需要配置一個1或更大的整數,預設是0,表示不開啟自動清理功能。(No Java system property) New in 3.4.0 autopurge.snapRetainCount #這個參數和上面的參數搭配使用,這個參數指定了需要保留的文件數目。預設是保留3個。(No Java system property) New in 3.4.0 initLimit #Follower在啟動過程中,會從Leader同步所有最新數據,然後確定自己能夠對外服務的起始狀態。Leader允許F在 initLimit時間內完成這個工作。通常情況下,我們不用太在意這個參數的設置。如果ZK集群的數據量確實很大了,F在啟動的時候,從Leader上同步數據的時間也會相應變長,因此在這種情況下,有必要適當調大這個參數了。(No Java system property) syncLimit #在運行過程中,Leader負責與ZK集群中所有機器進行通信,例如通過一些心跳檢測機制,來檢測機器的存活狀態。如果L發出心跳包在syncLimit之後,還沒有從F那裡收到響應,那麼就認為這個F已經不線上了。註意:不要把這個參數設置得過大,否則可能會掩蓋一些問題。 leaderServes #預設情況下,Leader是會接受客戶端連接,並提供正常的讀寫服務。但是,如果你想讓Leader專註於集群中機器的協調,那麼可以將這個參數設置為no,這樣一來,會大大提高寫操作的性能。(Java system property: zookeeper. leaderServes)。 server.x=[hostname]:nnnnn[:nnnnn] #這裡的x是一個數字,與myid文件中的id是一致的。右邊可以配置兩個埠,第一個埠用於F和L之間的數據同步和其它通信,第二個埠用於Leader選舉過程中投票通信。 group.x=nnnnn[:nnnnn]weight.x=nnnnn #對機器分組和權重設置,可以 參見這裡(No Java system property) cnxTimeout #Leader選舉過程中,打開一次連接的超時時間,預設是5s。(Java system property: zookeeper. cnxTimeout) zookeeper.DigestAuthenticationProvider.superDigest #ZK許可權設置相關,具體參見 《 使用super 身份對有許可權的節點進行操作 》 和 《 ZooKeeper 許可權控制 》 skipACL #對所有客戶端請求都不作ACL檢查。如果之前節點上設置有許可權限制,一旦伺服器上打開這個開頭,那麼也將失效。(Java system property: zookeeper.skipACL) forceSync #這個參數確定了是否需要在事務日誌提交的時候調用 FileChannel .force來保證數據完全同步到磁碟。(Java system property: zookeeper.forceSync ) jute.maxbuffer #每個節點最大數據量,是預設是1M。這個限制必須在server和client端都進行設置才會生效。(Java system property: jute.maxbuffer )
本文轉載出處:https://www.cnblogs.com/xiohao/p/5541093.html