在學習了Zookeeper(後文都簡稱zk)的介紹和功能後,您已經很好地理解了zk。 如今,在這個zk教程中,咱們將討論zk的優勢和侷限性。 zk有幾個功能對用戶很是有益,但同時也存在一些侷限性,因此在咱們使用zk前,必須先了解一下。讓咱們分別學習一下zk的優勢與侷限性服務器
下面列出了使用zk的各類優勢網絡
zk節點之間的協調過程很是簡單分佈式
zk高度同步,這意味着服務器進程之間既存在互斥又存在合做,同步有助於Apache HBase進行配置管理。性能
zk跟蹤一個數字,表示每一個更新的順序,保證消息有序學習
根據具體規則,zk對數據進行編碼。 另外,它還可確保咱們的應用程序始終如一地運行。 可是,在MapReduce中,咱們使用此方法(序列化)來協調隊列以執行正在運行的線程編碼
在讀請求多的狀況下,能以很快的速度運行線程
此外,能夠經過部署更多機器來增強zk的性能cdn
衆所周知,zk中的消息是有序的。 因此,爲了實現更高級別的抽象,須要有序性。 這就是有序性對咱們有利的方式blog
在讀多的狀況下,zk會很是快教程
zk很是可靠,由於一旦zk更新了,更新後的數據會一直保持,直到被覆蓋更新
zk只有兩種狀況,要麼所有成功,要麼所有失敗,沒有中間狀態的狀況
zk保證在必定時間段內,客戶端最終必定能從服務器上讀到最新的數據狀態
正所謂,"每一個硬幣都有兩面",zk在有這麼多優勢的同時也存在一些缺點,下面就是zk不足的列表
在現有服務器中,當新zk服務器數量超過zk服務中已存在的數量時數據會丟失。 同時,向zk服務發出Start命令,新服務器可能造成仲裁
在沒有用戶干預的狀況下,zk服務器沒法從版本3.4遷移到3.3,而後再遷移到3.4。
只容許3或5個這樣奇數個zk節點(要求奇數是爲了保證選舉的正常進行由於leader選舉要求 可用節點數量 > 總節點數/2,防止腦裂形成集羣不可用。同時在容錯能力相同的狀況下,奇數個節點更節省資源)
目前,它不支持機架放置和感知
不支持減小pod的數量,以防止意外數據丟失
不支持在初始部署後更改volume要求,以防止從新分配意外丟失數據
當服務部署在虛擬網絡上時,若是沒有徹底從新安裝,服務可能沒法切換到主機網絡。 另外,對於嘗試從主機切換到虛擬網絡,它們是相同的狀況
在虛擬網絡上,它目前不支持啓用Kerberos
對跨羣集方案的支持很是有限。 可是,沒有CP系統會一直支持跨集羣。 雖然咱們能夠說consul彷佛在這方面作得更好
它很是重,因此它須要咱們維持一個至關大的堆棧