原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會,謝謝!
原文鏈接地址:「小程序JAVA實戰(zhàn)」zookeeper簡介(71)
上一篇: 「小程序JAVA實戰(zhàn)」小程序的留言和評價功能(70)已是最新文章
如果一個應(yīng)用在操作自身,自身的刪除和添加的方式很容易讓自己知道。如果是小程序后端一個程序,web端一個程序,他們需要進(jìn)行通信。如果彼此之間自動的一致呢。如果是數(shù)據(jù)庫可以通過共用一個數(shù)據(jù)庫的方式,如果是文件就要用到一個工具zookeeper了。

方式多種多樣
- Springboot開放接口,ssm調(diào)用其完成同步工作。
這樣是有弊端的,耦合度比較高。
- 使用MQ消息隊列,生產(chǎn)者(SSM)調(diào)用消費者(Springboot)
這個可以達(dá)到解耦的方式
- 使用Zookeeper,Springboot監(jiān)聽并且下載
使用springboot 將我們小程序的后端,去監(jiān)聽zookeeper的服務(wù),如果我們ssm上傳一個文件,就會像我們的zookeeper server,寫入一個對象寫入一個文本,springboot監(jiān)聽到這個動作,就會下載,像這種就像是一個集群,每個server就相當(dāng)于一個節(jié)點,每個服務(wù)就會監(jiān)聽到我們的節(jié)點,當(dāng)有節(jié)點的寫入或者刪除,springboot就會執(zhí)行操作。
zookeeper 動物管理員
- 俗語入門
動物園里面有很多的對象,大象,豬,蜜蜂(hadoop,pig,hive)搞過大數(shù)據(jù)的老鐵對著應(yīng)該都有所了解。當(dāng)然zookeeper在分布式系統(tǒng)中也起到了非常大的作用,不僅僅是在大數(shù)據(jù),在java中用到了很多,配合一些中間件,比如solr都是可以相互進(jìn)行配合的。

- 簡介
- 中間件,提供協(xié)調(diào)服務(wù)
- 作用于分布式系統(tǒng),發(fā)揮其優(yōu)勢,可以為大數(shù)據(jù)提供服務(wù)。
- 支持java,提供java和c語言的客戶端接口api
什么是分布式系統(tǒng)
對外是隱形的,對外是顯形的,內(nèi)部的開發(fā)老鐵肯定是知道有多少臺機器,對于用戶來講我們只點一個按鈕完成這個操作就可以了。
- 很多臺計算機組成一個整體,一個整體一致對外并且處理同一個請求
- 內(nèi)部的每臺計算機都可以相互之間通信(rest/rpc)
- 客戶端到服務(wù)端的一次請求到響應(yīng)結(jié)束會經(jīng)歷多臺計算機(我們在網(wǎng)購的時候,下個單子,可以經(jīng)歷很多,訂單服務(wù),商品服務(wù),支付服務(wù)。一連串的服務(wù)完成下單的所有流程,組成的整體的分布式系統(tǒng))

zookeeper的常用java客戶端
- 原生api
使用起來相對麻煩,不是很方便。
超時重連,不支持自動,需要手動操作。
watch注冊一次后會失效,只能注冊一次,監(jiān)聽一次。
不支持遞創(chuàng)建節(jié)點
- zkclient
國外的IT高手合作開發(fā)的,只不過相對來說維護(hù)的頻率不是很高,已經(jīng)很久不維護(hù)了。使用的人比較少
- Apache curator
非常好用的java客戶端。
Apache的開源項目
解決watcher的注冊一次就失效的問題
Api更加簡單方便
提供更多提供方案并且實現(xiàn)簡單:比如分布式鎖。
提供常用的zookeeper工具類
編程風(fēng)格更爽,函數(shù)式的編程

Apache curator如何創(chuàng)建的客戶端
創(chuàng)建重試策略 - retryPolicy
創(chuàng)建客戶端 - client
初始化客戶端
PS:下次通過代碼的形式來說下,了解下如何創(chuàng)建客戶端