第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Zookeeper 簡介

圖片描述

1. 前言

大家好,今天我們來介紹一個在分布式環(huán)境中經(jīng)常使用的技術(shù)—— Apache Zookeeper 。Apache ZooKeeper 是 Apache Software Foundation 下的開源志愿者項(xiàng)目。接下來我們主要來介紹一下 Zookeeper 是什么?它有什么作用?以及我們?yōu)槭裁匆獙W(xué)習(xí) Zookeeper。

2. 什么是 Zookeeper

什么是 Zookeeper 呢?我們先來看一下 Zookeeper 的官網(wǎng)介紹:
Zookeeper 的官網(wǎng)介紹
原文直接翻譯過來的概念很抽象,那我們簡單的解釋一下。在分布式環(huán)境中,存在著大量的服務(wù),服務(wù)與服務(wù)之間難以做到彼此協(xié)調(diào),也不便于開發(fā)人員對服務(wù)進(jìn)行維護(hù)管理,而 Zookeeper 使用它簡單的結(jié)構(gòu)和 API ,協(xié)調(diào)服務(wù)與服務(wù)之間的關(guān)系,讓開發(fā)人員專注于應(yīng)用程序的核心業(yè)務(wù)邏輯,更方便的對應(yīng)用程序的服務(wù)進(jìn)行管理維護(hù)。
所以我們可以把 Zookeeper 叫做分布式協(xié)調(diào)服務(wù)。

簡單介紹了 Zookeeper 是什么,接下來我們就來了解一下 Zookeeper 具體的應(yīng)用場景。

3. Zookeeper 的應(yīng)用

  1. 服務(wù)注冊與發(fā)現(xiàn)
    當(dāng)我們的分布式系統(tǒng)增加了一個服務(wù),我們只需要利用 Znode 和 Watcher,讓它注冊到 Zookeeper 中,我們就可以很方便的對這個服務(wù)進(jìn)行管理;
  2. 分布式鎖
    為了防止在分布式環(huán)境下,服務(wù)中多個進(jìn)程之間互相干擾,我們可以用 Zookeeper 的臨時順序節(jié)點(diǎn)實(shí)現(xiàn)分布式鎖,對這些進(jìn)程進(jìn)行調(diào)度,讓它們順序執(zhí)行;
  3. 配置管理
    我們可以把核心的配置文件交給 Zookeeper 管理。當(dāng)我們修改配置文件時,Zookeeper 就會把配置文件的信息同步到集群中的所有節(jié)點(diǎn)中去。

那么 Zookeeper 是依靠什么來實(shí)現(xiàn)這些功能的呢?接下來我們來關(guān)注 Zookeeper 有什么特點(diǎn)。

4. Zookeeper 的特點(diǎn)

  1. 在分布式環(huán)境下,Zookeeper 的部署方式為一主( Leader )多從( Follower )的集群方式,只要半數(shù)以上的節(jié)點(diǎn)(包括 Leader 節(jié)點(diǎn))存活,Zookeeper 集群就能正常服務(wù)。就算是 Leader 節(jié)點(diǎn)掛掉了,Zookeeper 也會進(jìn)行崩潰恢復(fù),所說 Zookeeper 集群本身是高可用的;
  2. Zookeeper 集群的數(shù)據(jù)具有全局一致性。也就是說,無論客戶端連接到 Zookeeper 集群的哪一個從節(jié)點(diǎn),獲取的數(shù)據(jù)都是一致的;
  3. 在 Zookeeper 集群節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步更新時,要么全部成功,要么全部失敗。所以 Zookeeper 的數(shù)據(jù)更新具有原子性;
  4. 在同一個客戶端對 Zookeeper 節(jié)點(diǎn)進(jìn)行更新請求操作時,會根據(jù)發(fā)送的順序依次去執(zhí)行;
  5. 由于 Zookeeper 能存儲的數(shù)據(jù)量非常小,所以數(shù)據(jù)的同步更新也會非???。也就可以說在一定時間段內(nèi),客戶端獲取的數(shù)據(jù)是實(shí)時的。

根據(jù)上面的特點(diǎn),我們可以了解到 Zookeeper 在分布式環(huán)境中的作用還是非常強(qiáng)大的。所以我們還是有必要去學(xué)習(xí)一下 Zookeeper 的。
說了這么多 Zookeeper 的功能,那它與其他類似功能的技術(shù)相比較有什么區(qū)別呢?接下來我們用 Zookeeper 和其他技術(shù)進(jìn)行一下比較。

5. Zookeeper 與其他技術(shù)的比較

  1. Zookeeper 與 Redis 分布式鎖比較
    除了 Zookeeper 可以實(shí)現(xiàn)分布式鎖之外,我們還可以使用高性能緩存技術(shù) Redis 來實(shí)現(xiàn),我們來比較一下它們的優(yōu)缺點(diǎn)。

    分布式鎖 優(yōu)點(diǎn) 缺點(diǎn)
    Zookeeper 1. 功能已經(jīng)封裝,實(shí)現(xiàn)簡單 2. 有等待鎖的隊(duì)列,提升了搶鎖的效率 添加和刪除節(jié)點(diǎn)性能較低
    Redis Set 和 Del 指令的性能高 1. 實(shí)現(xiàn)較復(fù)雜,需要考慮超時、原子性、誤刪的情況 2. 沒有等鎖隊(duì)列,只能通過客戶端自旋來等鎖,效率低下
  2. Zookeeper 與 Eureka 的比較
    Eureka 是 Spring Cloud 微服務(wù)架構(gòu)的分布式注冊中心。
    在進(jìn)行比較之前,我們來了解一下 CAP 定理。什么是 CAP 定理呢?

    • C : Consistent ,一致性,需要保證數(shù)據(jù)的一致性。
    • A : Availability ,可用性,需要保證服務(wù)的可用性。
    • P : Partition tolerance ,分區(qū)容錯性,服務(wù)對網(wǎng)絡(luò)分區(qū)故障的容錯性。

    在 CAP 這個定理中,任何分布式系統(tǒng)都只能保證其中兩條。那么 Zookeeper 和 Eureka 又是保證的哪兩條呢?

    分布式注冊中心 優(yōu)點(diǎn) 缺點(diǎn)
    Zookeeper (保證 CP) 新的服務(wù)注冊時會同步到其他節(jié)點(diǎn),保證了節(jié)點(diǎn)數(shù)據(jù)的一致性 為了保證一致性,在 Leader 選舉階段服務(wù)不能注冊,失去了可用性
    Eureka (保證 AP) Eureka 的各個節(jié)點(diǎn)是平等的,只要有一個節(jié)點(diǎn)存在,就可以提供服務(wù) 新服務(wù)注冊時,不會把數(shù)據(jù)同步到其他節(jié)點(diǎn)上,失去了數(shù)據(jù)一致性

6. 學(xué)習(xí) Zookeeper 的必要條件

想要學(xué)習(xí) Zookeeper ,我們必須有以下技能:

  1. Java :Zookeeper 是基于 Java 語言開發(fā)的,這是學(xué)習(xí) Zookeeper 最基本的要求;
  2. Linux :Zookeeper 一般都是部署在 Linux 上的,所以我們需要知道如何操作 Lunix ,以及如何部署 Zookeeper ;
  3. 分布式開發(fā):Zookeeper 作為分布式環(huán)境中重要的組件,我們必須了解什么是分布式項(xiàng)目,如何去開發(fā)分布式項(xiàng)目,以及分布式的項(xiàng)目會遇到什么問題。

7. 課程設(shè)計(jì)思路

在 Zookeeper 的課程中,我們的學(xué)習(xí)路線從 Zookeeper 的基礎(chǔ)知識入門,到簡單使用 Zookeeper ,再到 Zookeeper 的實(shí)現(xiàn)原理,最后使用 Zookeeper 進(jìn)行應(yīng)用實(shí)戰(zhàn),一步一步從入門到 Zookeeper 應(yīng)用高手。以下是 Zookeeper 課程的學(xué)習(xí)路線:

  • Zookeeper 基礎(chǔ)入門
    包括 Zookeeper 的數(shù)據(jù)模型,Zookeeper 安裝及部署,以及兩種 Zookeeper 的 Java 客戶端的初步使用,有了扎實(shí)的基礎(chǔ)我們才能深入學(xué)習(xí)它的實(shí)現(xiàn)原理;
  • Zookeeper 實(shí)現(xiàn)原理
    包括 Zookeeper 通信原理,Zookeeper 監(jiān)聽機(jī)制,Zookeeper ACL,Zookeeper 序列化方式,Zookeeper ZAB 協(xié)議。其中重點(diǎn)是 Zookeeper ZAB 協(xié)議,包括兩種運(yùn)行模式:崩潰恢復(fù)模式和消息廣播模式。了解了 Zookeeper 的實(shí)現(xiàn)原理,我們才能更好的來使用 Zookeeper;
  • Zookeeper 應(yīng)用實(shí)戰(zhàn)
    在 Zookeeper 實(shí)戰(zhàn)內(nèi)容中,我們使用 Zookeeper 實(shí)現(xiàn)了分布式鎖、分布式 ID、負(fù)載均衡、配置中心、集群管理等,學(xué)習(xí)了如何使用了高效的部署方式 —— Docker 來構(gòu)建我們的 Zookeeper 集群,以及如何對 Zookeeper 的 Java 進(jìn)程和運(yùn)行狀態(tài)進(jìn)行監(jiān)控,最后我們還學(xué)習(xí)了在 Kafka 和 Dubbo 兩大框架中是如何使用 Zookeeper 的。

相信通過這些內(nèi)容的學(xué)習(xí),同學(xué)們一定會熟練的掌握 Zookeeper,并使用 Zookeeper 解決在實(shí)際的開發(fā)中遇到的分布式環(huán)境所帶來的問題。

8. 小結(jié)

本節(jié)課程我們主要了解了 Zookeeper 是什么,Zookeeper 的特點(diǎn)。我們來對本節(jié)內(nèi)容進(jìn)行總結(jié):

  • Zookeeper 是一種分布式協(xié)調(diào)服務(wù)
  • Zookeeper 的應(yīng)用有服務(wù)注冊與發(fā)現(xiàn),分布式鎖,配置管理。
  • Zookeeper 的特點(diǎn):集群的高可用性,數(shù)據(jù)的一致性、原子性,執(zhí)行的順序性,實(shí)時性。
  • Zookeeper 優(yōu)缺點(diǎn):Zookeeper 是 CP 系統(tǒng),在保證數(shù)據(jù)一致性的同時,不能保證服務(wù)注冊的高可用。