Zookeeper簡介及分散式概念

weixin_33850890發表於2017-12-25

1.概念

zookeeper用來協作分散式系統中的多個任務。一個協作任務是指涉及多個程式的任務,這種任務是為了協作或者是為了管理競爭。
協作意味著多個程式需要一起處理一個任務,一些程式處理某些操作,使得其他程式可以繼續工作,典型如主-從工作模式,從節點空閒之後,發訊息通知主節點可以接收資料繼續工作。
競爭則不同,意味著兩個程式不能同時工作,一個程式必須等待另一個程式處理完成後才能繼續工作。同樣在主從模式中,主節點只有一個,但是很多程式都想成為主節點,我們需要實現互斥排他鎖。實際上,成為主節點就是獲取鎖的過程。

2.zookeeper怎麼實現原語的同步?

雖然許多訊息傳遞演算法可以實現同步原語, 但是使用一個提供某種有序共享儲存的元件往往更加簡便, 這正是ZooKeeper所採用的方式。

3.zookeeper使用例項

1.選舉叢集的主節點,例如HBase資料倉儲的主節點選取;
2.檢測元件崩潰,例如Kafka,實現主體的發現,保持主體的生產和消費;
3.儲存叢集的後設資料,例如SolrCloud;
4.主節點選取、崩潰檢測和後設資料儲存一起使用,如應用系統;
5.作為控制器、實現資料分片、故障恢復和服務發現等。

4.分散式系統同步訊息方式

1.通過網路進行資訊交換;
2.通過讀寫共享儲存。

5.注意事項

zookeeper使用共享儲存模型實現應用寫作和同步原語。因此需要程式和儲存間進行網路同行,網路通訊是分散式系統設計的基礎。
1.訊息延遲,訊息傳輸可能發生任何延遲,比如網路堵塞;
2.處理器效能,作業系統的排程和超載也可能導致訊息延遲;
3.時鐘偏移,處理器時鐘並不可靠。
當訊息延遲很難判斷,是哪些因素導致的,可能是程式崩潰、網路堵塞或者是其他情況。
zookeeper的設計簡化了這些問題的處理,並不能消除問題,將這些問題在應用伺服器上完全透明化。

斜體部分疑惑

相關文章