zookeeper是以fast paxos演算法為基礎的,
paxos 演算法存在
活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有乙個proposer能提交成功,而fast paxos作了一些優化,通過選舉產生乙個leader (領導者),只有leader才能提交proposer,具體演算法可見fast paxos。因此,要想弄懂zookeeper首先得對fast paxos有所了解。
zookeeper的基本運轉流程:
1、選舉leader。
2、同步資料。
3、選舉leader過程中演算法有很多,但要達到的選舉標準是一致的。
4、leader要具有最高的zxid。
5、集群中大多數的機器得到響應並follow選出的leader
zoo.cfg
#客戶端連線server的埠,即對外服務埠,一般設定為2181
clientport=2183
synclimit=5
#zk提供了自動清理事務日誌和快照檔案的功能,這個引數指定了清理頻率,單位是小時,需要配置乙個1或更大的整數,預設是0,表示不開啟自動清理功能。
autopurge.purgeinterval=1
#單個客戶端與單台伺服器之間的連線數的限制,是ip級別的,預設是60,如果設定為0,那麼表明不作任何限制。請注意這個限制的使用範圍,僅僅是單台客戶端機器與單台zk伺服器之間的連線數限制,不是針對指定客戶端ip,也不是zk集群的連線數限制,也不是單台zk對所有客戶端的連線數限制
maxclientcnxns=0
#儲存快照檔案snapshot的目錄。預設情況下,事務日誌也會儲存在這裡。建議同時配置引數datalogdir, 事務日誌的寫效能直接影響zk效能。
datadir=/usr/local/...
#follower在啟動過程中,會從leader同步所有最新資料,然後確定自己能夠對外服務的起始狀態。leader允許f在initlimit時間內完成這個工作。通常情況下,我們不用太在意這個引數的設定。如果zk集群的資料量確實很大了,f在啟動的時候,從leader上同步資料的時間也會相應變長,因此在這種情況下,有必要適當調大這個引數了。
initlimit=10
#這個引數指定了需要保留的檔案數目。預設是保留3個
autopurge.snapretaincount=30
#這裡的x是乙個數字,與myid檔案中的id是一致的。右邊可以配置兩個埠,第乙個埠用於f和l之間的資料同步和其它通訊,第二個埠用於leader選舉過程中投票通訊。
server.x=master:2898:3898
#zk中的乙個時間單元。zk中所有時間都是以這個時間單元為基礎,進行整數倍配置的。例如,session的最小超時時間是2*ticktime。
ticktime=3000
需要注意的是:datadir目錄下資料檔案 myid 檔案中的數值在集群zookeeper的配置中是唯一的
SpringBoot專案中Redis配置多資料庫
背景 乙個小需求,單redis服務例項下根據業務配置多個資料庫,需要自定義redis配置稍作改動才能實現,此時就不能redistemplate一步就位了 注 redis使用單執行緒 多路復用 io模型,別把多業務的併發全加在乙個redis例項上,最好多例項或者集群處理!基本的配置我就不多說了,可以參...
Redis Redis在專案中的配置
目錄 springboot整合redis spring整合redis pom檔案中引入依賴 org.springframework.boot spring boot starter data redis 配置yml檔案 新增redisconfig配置類 例項 1.註解使用 cacheable val...
ubuntu QT專案中pcl配置引入
開啟qtcreator,建立乙個空的qmake專案,在.pro檔案下新增如下內容 includepath usr include eigen3 includepath usr include vtk 6.2 libs usr lib x86 64 linux gnu libvtk so includ...