1. 程式人生 > >zookeeper學習04 zookeeper收尾+dubbo前瞻

zookeeper學習04 zookeeper收尾+dubbo前瞻

回顧之前01到03的內容: zookeeper資料模型
臨時節點(有序) 持久化節點 (有序)
zookeeper是一個開源的分散式協調框架:資料釋出訂閱,負載均衡,叢集,master選舉。

原子性:要麼同時成功,要麼同是失敗(分散式事務)
單一檢視:無論客戶端連線到哪個伺服器,所看到的模型都是一樣的
可靠性:一旦伺服器端提交了一個事務並且獲得了伺服器端返回成功的標識,那麼這個事務所引起的伺服器端的變更會一直保留
實時性:近實時性
zookeeper不是用來儲存資料的,通通過監控資料狀態的變化,達到基於資料的叢集管理。

會話狀態:
NOT_CONNECTED
CONNECTING
CONNECTED
CLOSED

資料模型-->樹形結構
最小的資料單元為ZNODE

zab協議:客戶端發了一個事務請求給到了leader,而leader傳送給各個follower以後,並且收到了ack,leader已經commit,在準備ack給各個follower節點commit的時候,leader掛了,怎麼處理。
1)選舉新的leader(zxid的最大值)
2)同步給其他的follower

watcher:
eventyType
None 客戶端和服務端成功建立會話
NodeCreated 節點建立
NodeDeleted 節點刪除
NodeDataChanged 資料變更,資料內容
NodeChildrenChanged 子節點發生變更:子節點刪除新增的時候才會觸發,變更不會觸發

watcher特性:一次性觸發
事件被處理一次之後會被移除。如果需要永久監聽需要反覆註冊。

zookeeper序列化使用的方式jute

Acl許可權的操作
保證儲存在zookeeper上的資料安全性問題
schema(ip/Digest/world/super)
授權物件(192.168.1.1/11,root:root、world:anyone/super)

資料儲存
記憶體資料和磁碟資料

zookeeper會定時把資料儲存在磁碟上
DataDir儲存的是資料快照
儲存:某一時刻全量的資料
DataLogDir 儲存事務日誌

看不懂啊
我們使用命令來轉換下
java -cp :/data/program/zookeeper-3.4.10/lib/slf4j-api-1.6.1.jar:/data/program/zookeeper-3.4.10/zookeeper-3.4.10.jar org.apache.zookeeper.server.LogFormatter log.200000001

zookeeper有三種日誌
zookeeper.out 執行日誌
快照 儲存某一時刻的全量資料
事務日誌 事務操作的日誌記

到上面zookeeper的基礎學習告一段落了,接下來就要進入dubbo的學習

學習dubbo,我們首先要對他有個基礎的瞭解,dubbo是什麼,為什麼要用dubbo,怎麼用dubbo。
首先我們假定一個業務場景【電商】

各個系統之間通過介面互動,那麼各個系統分別得管理彼此之間複雜的介面互動,這太麻煩了。

dubbo能幹什麼
1)怎麼去維護url
通過註冊中心去維護url(zookeeper,redis,memecache....)
2)F5硬體負載均衡器的單點壓力比較大
軟負載均衡
3)服務之間的依賴關係錯綜複雜,依賴關係如何整理
自動去整理各個服務之間的依賴,一般是使用dubbo+zookeeper
4)如果伺服器的呼叫量越來越大,伺服器的容量問題如何去評估。擴容的指標
需要一個監控平臺,可以監控呼叫量,響應時間。

dubbo是什麼
dubbo是一個分散式的服務框架,提供高效能的以及透明化的RPC遠端服務呼叫解決方法,以及SOA治理方案。
核心部分
1)遠端通訊
2)叢集容錯
3)服務的自動發現
4)負載均衡

Dubbo的架構
核心角色:
provider
Consummer
Registry
Monitor
Container
架構圖

再談下現在我們經常談到的幾個概念
PAAS : platform as a service
IAAS : infrrastucturre as a service 基礎設施服務
SAAS : 軟體即服務