初认识ZK
?轉自:https://www.jianshu.com/p/8e322462bcca?
前言:
? ? 前段時間做了sdk直播服務,由于給游戲接入,所以必須要考慮并發性能問題,大家知道直播聊天,房間人數多了的話是很考驗服務器的壓力,服務器必須要承受較大的壓力,所以考慮服務拆分 拆成分布式的,不光服務是分布式的,房間也要做到分布式的,同一個房間的人分布在不同不同的服務器上,服務器之間可以進行通信 ,分發消息。彼此之間要知道哪些服務是好的。要監控這些系統是否可用 已經房間人數負載均衡,我們就想用到了ZK 來實現我們的業務服務 比如房間人數負載均衡 服務心跳檢測,zk是一個很成熟的開源產品,已經應用到了實際的產品中。所以性能穩定都是經過驗證的。廢話不多說,直接奔入主題吧。
簡單的來介紹一下zookeeper,讓我們初步認識zk是干什么的 借用官方的話來說
Zookeeper是一個高性能,分布式的,開源分布式應用協調服務。它是集群的管理者,監視著集群中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
zookeeper存儲結構:以樹形結構的方式存儲數據
ZooKeeper數據模型的結構整體上可以看作是一棵樹,每個節點稱做一個ZNode。每個ZNode都可以通過其路徑唯一標識
ZK節點ZNode分為四種:
1 ?持久化目錄節點:PERSISTENT ?與客戶端斷開連接后 此節點還一直存在
2 ?持久化順序編號目錄節點:PERSISTENT_SEQUENTIAL ?客戶端斷開連接后,該節點依舊存在,只是Zookeeper給該節點名稱進行順序編號
3 ?臨時目錄節點 客戶端與zookeeper斷開連接后,該節點被刪除
4 ?臨時順序編號目錄節點 EPHEMERAL_SEQUENTIAL 客戶端與zookeeper斷開連接后,該節點被刪除,只是Zookeeper給該節點名稱進行順序編號
Zookeeper 能給我們做什么?
1.命名服務? 2.配置管理? 3.集群管理? 4.分布式鎖? 5.隊列管理 6 事件監聽
?
.Zookeeper的配置管理
?
Client 想zk服務端注冊后 建立節點 ? 客戶端可以監聽節點的任何變化,監聽父節點 子節點 ?父子節點三種不同的三種方式。后續章節我會給大家講解
?
zk服務角色描述:
Zookeeper設計目的
1.最終一致性:client不論連接到哪個Server,展示給它都是同一個視圖,這是zookeeper最重要的性能。
2.可靠性:具有簡單、健壯、良好的性能,如果消息被到一臺服務器接受,那么它將被所有的服務器接受。
3.實時性:Zookeeper保證客戶端將在一個時間間隔范圍內獲得服務器的更新信息,或者服務器失效的信息。但由于網絡延時等原因,Zookeeper不能保證兩個客戶端能同時得到剛更新的數據,如果需要最新數據,應該在讀數據之前調用sync()接口。
4.等待無關(wait-free):慢的或者失效的client不得干預快速的client的請求,使得每個client都能有效的等待。
5.原子性:更新只能成功或者失敗,沒有中間狀態。
6.順序性:包括全局有序和偏序兩種:全局有序是指如果在一臺服務器上消息a在消息b前發布,則在所有Server上消息a都將在消息b前被發布;偏序是指如果一個消息b在消息a后被同一個發送者發布,a必將排在b前面。
?
今天就給大家簡單的介紹了zk可以干什么,后續我會繼續介紹ZK的其他的一些東西,我會以項目的方式給大家介紹 一個已經運行很穩定的線上項目。
我是小志碼字,一個簡單碼代碼的小人物。
作者:小志碼字
鏈接:https://www.jianshu.com/p/8e322462bcca
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
轉載于:https://www.cnblogs.com/maohuidong/p/8401825.html
總結
- 上一篇: 移动APP开发中8大安全问题
- 下一篇: 深入理解模板模式及实际应用