保潔阿姨看完都會了!java面向對象編程開發證書

一、什么是ZooKeeper

ZooKeeper是一個分布式服務協調框架,提供了分布式數據一致性的解決方案,基于ZooKeeper的數據結構,Watcher,選舉機制等特點,可以實現數據的發布/訂閱,軟負載均衡,命名服務,統一配置管理,分布式鎖,集群管理等等。

二、為什么使用ZooKeeper

ZooKeeper能保證:

  • 更新請求順序進行。來自同一個client的更新請求按其發送順序依次執行
  • 數據更新原子性。一次數據更新要么成功,要么失敗
  • 全局唯一數據視圖。client無論連接到哪個server,數據視圖都是一致的
  • 實時性。在一定時間范圍內,client讀到的數據是最新的

三、數據結構

ZooKeeper的數據結構和Unix文件系統很類似,總體上可以看做是一棵樹,每一個節點稱之為一個ZNode,每一個ZNode默認能存儲1M的數據。每一個ZNode可通過唯一的路徑標識。如下圖所示:

創建ZNode時,可以指定以下四種類型,包括:

  • PERSISTENT,持久性ZNode。創建后,即使客戶端與服務端斷開連接也不會刪除,只有客戶端主動刪除才會消失。
  • PERSISTENT_SEQUENTIAL,持久性順序編號ZNode。和持久性節點一樣不會因為斷開連接后而刪除,并且ZNode的編號會自動增加。
  • EPHEMERAL,臨時性ZNode。客戶端與服務端斷開連接,該ZNode會被刪除。
  • EPEMERAL_SEQUENTIAL,臨時性順序編號ZNode。和臨時性節點一樣,斷開連接會被刪除,并且ZNode的編號會自動增加。

四、監聽通知機制

Watcher是基于觀察者模式實現的一種機制。如果我們需要實現當某個ZNode節點發生變化時收到通知,就可以使用Watcher監聽器。

客戶端通過設置監視點(watcher)向 ZooKeeper 注冊需要接收通知的 znode,在 znode 發生變化時 ZooKeeper 就會向客戶端發送消息

這種通知機制是一次性的。一旦watcher被觸發,ZooKeeper就會從相應的存儲中刪除。如果需要不斷監聽ZNode的變化,可以在收到通知后再設置新的watcher注冊到ZooKeeper。

監視點的類型有很多,如監控ZNode數據變化、監控ZNode子節點變化、監控ZNode 創建或刪除

五、選舉機制

ZooKeeper是一個高可用的應用框架,因為ZooKeeper是支持集群的。ZooKeeper在集群狀態下,配置文件是不會指定Master和Slave,而是在ZooKeeper服務器初始化時就在內部進行選舉,產生一臺做為Leader,多臺做為Follower,并且遵守半數可用原則。

由于遵守半數可用原則,所以5臺服務器和6臺服務器,實際上最大允許宕機數量都是3臺,所以為了節約成本,集群的服務器數量一般設置為奇數

如果在運行時,如果長時間無法和Leader保持連接的話,則會再次進行選舉,產生新的Leader,以保證服務的可用

六、初の體驗

首先在官網下載ZooKeeper,我這里用的是3.3.6版本。

然后解壓,復制一下/conf目錄下的zoo_sample.cfg文件,重命名為zoo.cfg。

修改zoo.cfg中dataDir的值,并創建對應的目錄:

最后到/bin目錄下啟動,我用的是window系統,所以啟動zkServer.cmd,雙擊即可:

啟動成功的話就可以看到這個對話框:

可視化界面的話,我推薦使用ZooInspector,操作比較簡便

那么如何才能正確的掌握Redis呢?

為了讓大家能夠在Redis上能夠加深,所以這次給大家準備了一些Redis的學習資料,還有一些大廠的面試題,包括以下這些面試題

  • 并發編程面試題匯總

  • JVM面試題匯總

  • Netty常被問到的那些面試題匯總

  • Tomcat面試題整理匯總

  • Mysql面試題匯總

  • Spring源碼深度解析

  • Mybatis常見面試題匯總

  • Nginx那些面試題匯總

  • Zookeeper面試題匯總

  • RabbitMQ常見面試題匯總

JVM常頻面試:

Redis高頻面試筆記:基礎+緩存雪崩+哨兵+集群+Reids場景設計

Mysql面試題匯總(一)

Redis高頻面試筆記:基礎+緩存雪崩+哨兵+集群+Reids場景設計

Mysql面試題匯總(二)

Redis高頻面試筆記:基礎+緩存雪崩+哨兵+集群+Reids場景設計

Redis常見面試題匯總(300+題)

Redis高頻面試筆記:基礎+緩存雪崩+哨兵+集群+Reids場景設計

有需要的朋友,可以直接點擊這里免費獲取

[外鏈圖片轉存中…(img-yuzEorK4-1625826510323)]

有需要的朋友,可以直接點擊這里免費獲取

絕無套路!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385687.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385687.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385687.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

做了6年的Java,docker端口映射無法外部訪問

1.1. 操作系統簡介 我通過以下四點介紹什么是操作系統: 操作系統(Operating System,簡稱 OS)是管理計算機硬件與軟件資源的程序,是計算機的基石。操作系統本質上是一個運行在計算機上的軟件程序 ,用于管理…

做了6年的Java,mysql配置環境變量mac

一:打破狹窄的技術視野 ①真實項目對外開發系統性講解 ②例如電商、教育行業、社區網站等主流互聯網場景的商業解決方案講解 ③針對不同業務場景海量數據或者訪問量以及及時響應等所面臨的挑戰進行對應的瓶頸分析。 ④拓展技術視野,與一線大廠零距離…

做了三年Java,docker網絡映射配置

數據庫 2.1 池化技術:如何減少頻繁創建數據庫連接的性能損耗?2.2 數據庫優化方案(一):查詢請求增加時,如何做主從分離?2.3 數據庫優化方案(二):寫入數據量增…

入職阿里啦!docker-e命令參數

JAVA基礎 JAVA異常分類及處理異常分類異常的處理方式Throw和throws的區別JAVA反射動態語言反射機制概念 (運行狀態中知道類所有的屬性和方法)Java反射API反射使用步驟(獲取Class對象、調用對象方法)獲取Class對象的3種方法創建對…

算法 | 快速排序

【算法圖解】&#xff1a;數據結構教程李春葆版P378 1. 遞歸代碼&#xff1a; #include<iostream> #include<vector> using namespace std;void quicksort(vector<int> &v, int left, int right) {if (left < right){int key v[left];int low le…

全套學習!java排序sort方法

字節跳動 ?試前?????結 ?試前 頭條的?試是三家?最專業的&#xff0c;每次?試前有專?的HR和你約時間&#xff0c;確定OK后再進??試。每次都是通過視頻?試&#xff0c;因為都是之前都是電話?或現場?&#xff0c;所以視頻?試還是有點不?然。也有?覺得視頻?試…

【排序算法】計數排序

當輸入的元素是 n 個 0 到 k 之間的整數時&#xff0c;它的運行時間是 Θ(n k)。計數排序不是比較排序&#xff0c;排序的速度快于任何比較排序算法。 由于用來計數的數組B的長度取決于待排序數組中數據的范圍&#xff08;等于待排序數組的最大值與最小值的差加上1&#xff0…

全套學習!mysql2003錯誤代碼

正文 在寫這個文章之前&#xff0c;我花了點時間&#xff0c;自己臆想了一個電商系統&#xff0c;基本上算是麻雀雖小五臟俱全&#xff0c;我今天就用它開刀&#xff0c;一步步剖析&#xff0c;我會講一下我們可能會接觸的技術棧可能不全&#xff0c;但是夠用&#xff0c;最后…

全套學習!mysql命令窗口執行sql文件

阿里P8級架構師核心理論落地篇 再造淘寶&#xff0c;貫穿全系&#xff0c;阿里團隊代碼落地&#xff0c;詳細每個版本迭代&#xff0c;拒絕2-3個月PPT架構師再造淘寶之咚寶-技術支撐-完整搭建DevOps再造淘寶之咚寶-統一規則-代碼規范落地解析再造淘寶之咚寶搭建基礎服務再造淘…

java招聘職位描述,附學習筆記+面試整理+進階書籍

面&#xff1a;為什么要使用雙親委派機制去加載類&#xff1f; 答&#xff1a;避免多份同樣字節碼的加載&#xff0c;浪費內存。 類的加載方式 隱式加載&#xff1a;new顯示加載&#xff1a;loadClass、forName等 類的裝載過程如下圖&#xff1a; 面&#xff1a;loadClass和…

94. 二叉樹的中序遍歷

給定一個二叉樹&#xff0c;返回它的中序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [1,3,2] 進階: 遞歸算法很簡單&#xff0c;你可以通過迭代算法完成嗎&#xff1f; 來源&#xff1a;力扣&#xff08;LeetCode&#xff09; 鏈接&#xff1a;http…

判斷兩個結構體是否相等

一、判斷兩個結構體是否相等 判斷兩個結構體是否相等&#xff1a;重載操作符""不能用函數memcpy來判斷兩個結構體是否相等&#xff1a;memcmp函數是逐個字節進行比較的&#xff0c;而struct存在字節對齊&#xff0c;字節對齊時補的字節內容是隨機的&#xff0c;會產生…

java攔截器和過濾器,2021最新版!

正文 現在市面上的算法資料也五花八門&#xff0c;種類繁多&#xff0c;小編也整理了一份不同于市面且有意思的算法資料&#xff0c;不能說多全面&#xff0c;但是是小編花了很長時間整理歸納出來的&#xff0c;自我感覺還行。分享給同事及群里反響都不錯&#xff0c;所以小編…

java排列組合算法優缺點,一招徹底弄懂!

一. 為什么使用spring cloud alibaba 很多人可能會問&#xff0c;有了spring cloud這個微服務的框架&#xff0c;為什么又要使用spring cloud alibaba這個框架了&#xff1f; 最重要的原因在于spring cloud中的幾乎所有的組件都使用Netflix公司的產品&#xff0c;然后在其基礎…

001 出錯處理

函數strerror() 1.1 函數原型 char *strerror(int errnum)分析&#xff1a;此函數將errnum&#xff08;它通常就說errno值&#xff09;映射為一個出錯信息字符串&#xff0c;并返回錯誤此字符串 。 1.2 代碼清單 #include <stdio.h> #include <string.h> #inclu…

java接口作用和好處,持續更新大廠面試筆試題

業界常用的服務注冊與發現組件對比 了解服務注冊與發現的基本原理后&#xff0c;如果你要在項目中使用服務注冊與發現組件&#xff0c;當面對眾多的開源組件該如何進行技術選型&#xff1f; 在互聯網公司里&#xff0c;有研發實力的大公司一般會選擇自研或者基于開源組件進行…

第七章 進程環境 | 001 命令形參、gcc與g++的使用

命令形參 命令行參數是使用main()函數參數來處理的&#xff0c;其中&#xff0c;argc是指傳入參數的個數&#xff0c;argv[]是一個指針數組&#xff0c;指向傳遞給程序的每個參數。 應當指出的是&#xff0c; argv[0]存儲程序的名稱&#xff0c;argv[1]是一個指向第一個命令行…

java接口實例化對象和類實例化對象,附贈課程+題庫

面試整體事項 簡歷要準備好&#xff0c;聯系方式一定要正確清晰醒目&#xff0c;項目經歷按照時間倒序闡述&#xff0c;注意描述自己在項目中承擔的職責&#xff0c;簡歷的模板盡量選擇簡潔的&#xff0c;畢竟程序員大部分還是喜歡簡單明了的。推薦boss直聘&#xff0c;我覺得…

java接口開發規范,干貨滿滿

第一個模塊&#xff1a;數據庫 1.1 騰訊數據庫面試問題 解釋ACID四大特性 原子性的底層實現 數據庫宕機后恢復的過程 如何保證事務的ACID特性 MySQL日志類型 這5個題目相對來說是比較普遍的&#xff0c;這里我就不一一給出答案了&#xff0c;給大家看下我的那個數據庫學…