1. 程式人生 > >zookeeper 選舉機制 和 eruake

zookeeper 選舉機制 和 eruake

zookeeper簡介:

在分散式環境中,多個服務之間協調一致。有提供分散式鎖、服務配置。實現分散式領域CAP(consistency一致性,Availiablity高可用,patition tolrenance 分割槽容錯性)原理中的CP。

問題一:為何zookeeper要有leader?

zookeeper是以Fast Paxos演算法為基礎,paxos演算法存在活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有一個proposer能提交成功,而Fase Paxos作了一些優化,通過選舉產生一個leader,只有leader才能提交proposer,具體的可以看一下Fast Paxos演算法


zookeeper協調一致原理paxos演算法:

在分散式系統只發生幾起宕機或網路異常情況下,在叢集內部對某個資料達成一致(proposer和accepter和learner都認為某個value被選定),並且保證不論發生上述任何異常,都不會整個系統的一致性。

在paxos演算法中,分為以下角色:

proposer:提議者

accepter:決策者

learners:最終決策學習者

提議者想決策者提出方案,決策者會根據zookeeper的權重(時間約後啟動,權重越大)選擇leader,如果過半的決策者同意則產生主節點。

選舉狀態:

looking:競選狀態

following:隨從狀態,參與投票

observing:觀察狀態,不參與投票

leading:領導中

選舉流程:

假設有5臺機器,分別A,B,C,D,E。  注:zookeeper啟動的時候,會讀叢集的配置Ip

1.A啟動,當前沒有leader,給自己投票,其他機器沒有啟動,收不到反饋資訊,處於LOOKING

2.B啟動,當前沒有leader,給自己投票,B發訊息給其他機器,A接受到了來自B的投票,B比自己服務號大,接受投票,支援B當選,B接收到A 小於或等於自己的投票,支援A投自己。所以2:1,但是沒有超過一半;following狀態

3.C啟動,當前沒有leader,給自己投票,廣播給A和B,A和B收到比自己大的服務號,支援C當選並且A清空支援B的投票,此時比分為A:B:C=1:1:3,超過一半,C勝出,成為LEADER,狀態為leading

4.D啟動,已經有leader了,同步leader狀態,不參與投票,observing狀態

zookeeper弱點--腦裂:

zookeeper之間是通過心跳檢測來確認節點是否可用,在網路延遲的情況下,會出現假死情況。假設A,B,C,D,E,F,E七個節點,C為主節點。現在C假死了,A,B可用連C,D,E,F都連不上C,D,E,F會通知叢集所有可用的zk(master掛掉了,超過半數都連不上C,我們要重新選舉),從而F會成為新的主節點。F去通知client主節點切換了,但是會有網路延遲。此時有兩部分client,一部分連線新master,一部分連線老大master,如果此時client要更新同一份資料進行更新,就無法保持一致性了。

eureka(希臘語,詞義:我找到啦,我發現了)

特點:

1.如果某臺伺服器宕機了,不會有選舉過程,客戶端會自動切換到其他eureka,如果故障伺服器回覆後,又將重新納入叢集,並同步新的服務註冊資訊。當網路故障,每個eruka吃持續對外提供服務,zookeeper要先選舉,只有master對外提供服務

2.eureka當機器心跳異常,會進入自我保護模式,延長註冊服務過期時間,就是好資料和壞資料都留著總比丟掉好資料強,等網路恢復後再推出保護模式

部署:

1.下載war包:

http://search.maven.org/#search%7Cga%7C1%7Ceureka-server

2.git下載原始碼編譯:

3.自己建spring-boot專案:

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath />
	</parent>
	<artifactId>luochaoqun-spring-cloud-eureka</artifactId>
	<properties>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
			<version>1.4.2.RELEASE</version>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>


		</dependencies>
	</dependencyManagement>
package com.main;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
*@author:luo.cq
*@email:[email protected]
*@since:2018年5月30日
*@description:
*
**/
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServerApplication.class, args);
	}
}

配置項application.properties:

server.port=9000
eureka.instance.hostname=localhost
#don't regist self
eureka.client.register-with-eureka=false
#jinzhi jiansuo fuwu
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

介面:


相關推薦

zookeeper 選舉機制 eruake

zookeeper簡介:在分散式環境中,多個服務之間協調一致。有提供分散式鎖、服務配置。實現分散式領域CAP(consistency一致性,Availiablity高可用,patition tolrenance 分割槽容錯性)原理中的CP。問題一:為何zookeeper要有l

ZooKeeper叢集選舉機制叢集搭建

簡介: Zookeeperr是一個 開源 的分散式應用程式協調伺服器是Hadoop的重要元件 ZooKeeper是一個 分散式的開放原始碼分散式應用程式協調伺服器,它是一個為分散式應用提供一致性服務的軟體,提供功能包括:配置維護、域名服務、分散式同步、叢集管理等。 功能: &nbs

【轉】Zookeeper學習---zookeeper 選舉機制介紹

erp change 交換 內容 數值 所有 ase 一輪 eval 【原文】https://www.toutiao.com/i6593162565872779784/ zookeeper集群 配置多個實例共同構成一個集群對外提供服務以達到水平擴展的目的,每個服務器上的數據

ZooKeeper 選舉機制

keep owin 正常的 需要 分別是 領導者 反饋 election 數據 ookeeper 默認的算法是 FastLeaderElection,采用投票數大於半數則勝出的邏輯。6.1 . 概念服務器 ID比如有三臺服務器,編號分別是 1,2,3。編號越大在選擇算法中的

學習筆記:Zookeeper選舉機制

1、Zookeeper選舉機制Zookeeper雖然在配置檔案中並沒有指定master和slave但是,zookeeper工作時,是有一個節點為leader,其他則為followerLeader是通過內部的選舉機制臨時產生的9.1 zookeeper的選舉機制(zk的資料一致性核心演算法paxos)以一個簡

8.8.ZooKeeper 原理選舉機制

TE 宋體 per 機制 CA tro 通過 family 沒有 1.ZooKeeper原理   Zookeeper雖然在配置文件中並沒有指定master和slave但是,zookeeper工作時,是有一個節點為leader,其他則為follower,Leader是通 過內

java架構之路-(分散式zookeeperzookeeper叢集配置選舉機制詳解

  上次部落格我們說了一下zookeeper的配置檔案,以及命令的使用https://www.cnblogs.com/cxiaocai/p/11597465.html。我們這次來說一下我們的zookeeper的叢集配置和java的API相關操作。 叢集:   一般情況下我們用zookeeper來做任務排程中心

zookeeper源碼分析:選舉流程請求處理

and ces 成員 star sse rep gpo 方法 nec 集群啟動: QuorumPeerMain. runFromConfig() quorumPeer.start(); loadDataBase(); cnxnFactory.start(

zookeeper選舉機制(比較清晰)

一、前言   前面學習了Zookeeper服務端的相關細節,其中對於叢集啟動而言,很重要的一部分就是Leader選舉,接著就開始深入學習Leader選舉。 二、Leader選舉   2.1 Leader選舉概述   Leader選舉是保證分散式資料一致性的關鍵所在。當Zookeepe

zookeeper叢集的選舉機制

 Zookeeper預設的演算法是FastLeaderElection, 採用投票數大於半數則勝出的邏輯。     選舉依據:         伺服器ID: &n

第5章 選舉模式ZooKeeper的叢集安裝 5-1 叢集的一些基本概念

xx就是我們的master,也就是我們的主節點。心跳機制,當有一個節點掛掉之後,整個叢集還是可以工作的。選舉模式,我們現在的master是正常執行的,但是在某些情況下它宕機了宕機了,那麼這個時候它這個叢集裡面就少了master,沒有master兩個slave需要去競爭。競爭完之後slave1把slave2給幹

zookeeper 半數可用/選舉機制

1.半數可用機制,半數可用指的是zk叢集中一半以上的機器正常時叢集才能正常工作 已經啟動了hadoop002(follower),hadoop003(leader) 下面停止hadoop002   在hadoop003上檢視zk狀態發現已經不能提供服務,因為2的半數以上至少是2,1不滿足條件

Zookeeper執行機制選舉機制

Zookeeper的執行機制 1.在伺服器開啟後向zookeeper註冊資訊 2.通過process來註冊監聽,獲取伺服器列表 3.此時如果有伺服器下線 4.下線通知 5.重新通過process來註冊監聽,獲取伺服器列表 Zookeeper的選舉機制 1.叢集

zookeeper的工作原理與選舉機制

目錄: 1、工作原理概述 2、Fast Leader選舉演算法(領導者選舉) 3、Leader與Follower同步資料(原子廣播) 工作原理概述 簡單的說一下zookeeper工作的過程,如果對這個過程還不太清楚,或者說對它如何使用等不太清楚的,可以參考一下其他的文

第5章 選舉模式ZooKeeper的叢集安裝

選舉模式和ZooKeeper的叢集安裝 5-1 叢集的一些基本概念 5-2 單機偽分散式安裝zookeeper叢集 5-3 三臺物理機(虛擬機器)安裝zookeeper叢集 5-4 測試叢集角色以及選舉 5-1 叢集的一些基本概念

zookeeper的原理使用(二)-leader選舉

一、前言   前面學習了Zookeeper服務端的相關細節,其中對於叢集啟動而言,很重要的一部分就是Leader選舉,接著就開始深入學習Leader選舉。 二、Leader選舉   2.1 Leader選舉概述   Leader選舉是保證分散式資料一致性的關鍵所在。當Zookeepe

zookeeper選舉機制及客戶端命令列

選舉機制 首先給自己一票 注意事項 只要有半數以上的節點存活就能正常工作 如何保證半數以上的存活? 配置zk叢集要配置奇樹臺 偶數個跟奇數個叢集的宕機容忍度相同,所以偶數個屬於浪費資源 zookeeper客戶端命令列 1、啟動客戶端 zkCli.sh 2、檢視幫

Zookeeper選舉機制

半數機制: 叢集中半數以上機器存活,叢集可用。所以zookeeper適合裝在奇數臺機器上。 Zookeeper雖然在配置檔案中並沒有指定master和slave。但是,zookeeper工作時,是有一個

說說zookeeper【叄】_工作機制實現原理

本文簡單說說zookeeper的工作機制。 總體來說,客戶端先和zookeeper伺服器建立起一個TCP長連線(session),之後根據ACL許可權的設定,可在zookeeper伺服器上對目

zookeeper leader選舉機制

最近看了下zookeeper的原始碼,先整理下leader選舉機制 先看幾個關鍵資料結構和函式 服務可能處於的狀態,從名字應該很好理解 public enum ServerState {   LOOKING, FOLLOWING, LEADING, OBSERVING; } 選票引數,還有Notifi