成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官問:ZooKeeper 有幾種節點類型?別回答 4 種啦

大數據
持久不用我多說,是用的最多的一種類型,也是默認的節點類型,臨時節點相較于持久節點來說,就是它會隨著客戶端會話結束而被刪除,通常可以用在一些特定的場景,例如分布式鎖釋放,健康檢查等。

[[401848]]

本文轉載自微信公眾號「HelloGitHub」,作者HelloGitHub。轉載本文請聯系HelloGitHub公眾號。

一、關于 ZK 的節點類型

大家如果刷過 ZK 相關面試題的話,就一定會刷到過 “ZK 有幾種節點類型?”,大家通常背書的答案的話是:4 種!但其實 ZK (3.6.2)服務端支持 7 種節點類型,分別是:

  • 持久
  • 持久順序
  • 臨時
  • 臨時順序
  • 容器
  • 持久 TTL
  • 持久順序 TTL

這 7 種類型之前的文章中也有提到過,但是并沒有展開講。這次更新的單篇想要把這 7 種類型的節點,認認真真的講一遍!Let's GO

二、簡單介紹

2.1 持久、臨時

持久不用我多說,是用的最多的一種類型,也是默認的節點類型,臨時節點相較于持久節點來說,就是它會隨著客戶端會話結束而被刪除,通??梢杂迷谝恍┨囟ǖ膱鼍埃绶植际芥i釋放,健康檢查等。

2.2 持久順序、臨時順序

這兩種我放在一起介紹,因為他們相對于上面兩種的特性就是 ZK 會自動在這兩種節點之后增加一個數字的后綴,而路徑 + 數字后綴是能保證唯一的,這數字后綴的應用場景可以實現諸如分布式隊列,分布式公平鎖等。

2.3 容器

容器節點是 3.5 以后新增的節點類型,只要在調用 create 方法時,指定 CreateMode 為 CONTAINER 即可創建容器的節點類型,容器節點的表現形式和持久節點是一樣的,但是區別是 ZK 服務端啟動后,會有一個單獨的線程去掃描,所有的容器節點,當發現容器節點的子節點數量為 0 時,會自動刪除該節點,除此之外和持久節點沒有區別,官方注釋給出的使用場景是 Container nodes are special purpose nodes useful for recipes such as leader, lock, etc. 說可以用在 leader 或者鎖的場景中。

2.4 持久 TTL、持久順序 TTL

關于持久和順序這兩個關鍵字,不用我再解釋了,這兩種類型的節點重點是后面的 TTL,TTL 是 time to live 的縮寫,指帶有存活時間,簡單來說就是當該節點下面沒有子節點的話,超過了 TTL 指定時間后就會被自動刪除,特性跟上面的容器節點很像,只是容器節點沒有超時時間而已,但是 TTL 啟用是需要額外的配置(這個之前也有提過)配置是 zookeeper.extendedTypesEnabled 需要配置成 true,否則的話創建 TTL 時會收到 Unimplemented 的報錯

三、原理介紹

單純的持久和臨時節點我就不介紹了,之前的系列文章有講

3.1 順序關鍵字

客戶端創建一個順序節點的時候,服務端得知當前節點是順序節點的時候會自動給路徑加上后綴,后綴就是父節點的 cversion,代表創建子節點的個數

  1. if (createMode.isSequential()) { 
  2.    path = path + String.format(Locale.ENGLISH, "%010d", parentCVersion); 

就是這么簡單~

3.2 容器、TTL 關鍵字

這兩種其實可以放在一起講,服務端在啟動的時候會額外啟動一個定時任務線程,會定期的掃描所有的容器和 TTL 的節點,逐一判斷子節點的數量以及一些相關配置,來決定是否刪除,首先整個邏輯是在 ContainerManager 中,定時任務是由 TimeTask 實現的,相關的配置有

配置項 默認值 說明
znode.container.checkIntervalMs 60000(毫秒) 定時任務檢查的間隔
znode.container.maxPerMinute 10000 和上面的參數聯合成為最小的檢查間隔,每個節點間隔必須差 (60000 / 10000)毫秒(默認 6 毫秒)以上
znode.container.maxNeverUsedIntervalMs 0 如果配置不為 0 的話,當容器 TTL 節點最后一次更新的時間和當前時間戳的差超過這個值的話,也會被刪除

四、小結

 

  • 持久關鍵字:客戶端不主動刪除的話,節點數據會一直存在
  • 臨時關鍵字:客戶端連接斷開后,節點數據會被一起刪除
  • 順序關鍵字:服務端會自動為該節點加數字后綴
  • 容器:服務端會定期掃描這些節點,當該節點下面沒有子節點時(或其他條件時)服務端會自動刪除節點
  • TTL:需要額外配置才能啟用,基本和容器相同,當超過 TTL 時間節點下面都沒有再創建子節點時會被刪除,但是當創建子節點會重置該超時時間

 

責任編輯:武曉燕 來源: HelloGitHub
相關推薦

2021-03-24 10:25:24

優化VUE性能

2020-12-01 11:50:49

數據庫Redis面試

2010-08-23 15:06:52

發問

2023-10-31 16:38:02

注冊中心負載均衡器

2021-10-22 08:37:13

消息不丟失rocketmq消息隊列

2021-12-25 22:31:10

MarkWord面試synchronize

2021-11-08 09:18:01

CAS面試場景

2021-12-08 06:53:28

HashMap面試JDK 8

2024-02-01 08:08:53

Spring過濾器類型Gateway

2022-01-05 08:56:20

Vue修飾符面試

2024-03-25 11:03:38

Vue修飾符lazy

2021-12-16 18:38:13

面試Synchronize

2021-01-06 05:36:25

拉鏈表數倉數據

2021-07-02 06:54:45

面試鴨子類型

2022-01-05 09:55:26

asynawait前端

2025-03-31 07:53:10

單例模式設計模式C#

2023-02-20 08:08:48

限流算法計數器算法令牌桶算法

2019-11-26 08:24:13

TCP擁塞控制網絡協議

2022-09-13 14:44:40

HashMap哈希表紅黑樹

2024-09-14 10:50:29

通信代碼函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 美美女高清毛片视频免费观看 | 国内精品视频一区二区三区 | 国产午夜精品一区二区三区嫩草 | 龙珠z国语版在线观看 | 久久久久久成人 | 一区二区三区四区五区在线视频 | 久草网址 | 色视频免费 | www.久久| 国产成人精品一区二区 | 国产午夜精品视频 | 国产成人在线一区二区 | 欧美精品久久久 | 一级特黄色毛片 | 天天干天天爽 | 97国产超碰| 91精品国产综合久久久久久漫画 | 国产精品一区二区久久精品爱微奶 | 亚洲精品aⅴ | 91社区在线观看高清 | 国产精品一区二区三区久久久 | 每日在线更新av | 成人一区二区三区在线观看 | 国产精品久久久久久238 | 欧美国产精品一区二区三区 | 午夜日韩精品 | 国产乱码精品一区二区三区忘忧草 | 久久久久久国产一区二区三区 | av网址在线播放 | 日本一道本视频 | 久久精品国产亚洲 | av在线天堂| 日韩高清成人 | 久久爱黑人激情av摘花 | 狠狠综合久久av一区二区小说 | 日韩成人一区 | 天天夜干 | 成人在线精品 | 久久精品 | 久久久精品网站 | 日韩一区二区三区精品 |