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