開發與維運

Nacos的集群部署 | 帶你讀《Spring Cloud Alibaba(2019)》之五

本文來自於《精通Spring Cloud Alibaba》課程的整理,講師為餘勝軍,點擊查看視頻內容
本文系志願者整理,供配合學習中心課程使用,不做商業用途。

Nacos的集群部署

Nacos 和信心幫助我們做的事情註冊中心、分佈式配置中心

註冊中心 沒有必要將數據持久化到數據庫中,可以持久化到本都的硬盤。
分佈式配置中心 默認是將數據持久化到本地嵌入式的數據庫改為持久化到myql中

偽集群:
127.0.0..1:8848
127.0.0..1:8849
127.0.0..1:8850

注意事項:Nacos在不同版本下運行集群是不一樣
在linux版本中運行的時候默認是集群模式,如果需要改為單機啟動修改配置
注意:
1、nacos在windows版本下運行默認是單機版本 需要指定startup.cmd -m cluster
2、nacos在linux版本下運行默認是集群版本 如果想連接單機版本 startup.cmd –m standalone
1.png

注意事項:集群的ip地址不能採用127.0.0.1

分佈式情況下 集群保證數據的一致性集群的算法
ZAB(Zookeeper)核心原理兩階段是提交協議2PC、Paxos、nacos數九一致性協議raft協議採用心跳形式

Nacos的數據持久化

數據持久化
默認的情況下,分佈式配置中心的數據存放到本地data目錄下,但是這種情況如果nacos集群的話無法保證數據的同步性。

在0.7版本之前,在單機模式時nacos使用嵌入式數據庫實現數據的存儲,不方便觀察數據存儲的基本情況。在0.7版本增加了支持mysql數據源能力,具體的操作步驟:

1、安裝數據庫,版本要求:5.6。5+
2、初始化mysql數據庫,數據庫初始化文件:nacos-mysql.sql
3、修改conf/application.properties文件,增加支持mysql數據源配置(目前只支持mysql),添加mysql數據源的url、用戶名和密碼。

相當於配置文件數據源,統一放到數據庫中。
2.png

Nacos與Eureka區別

1、Eureka採用ap模式形式實現註冊中心
2、Nacos默認採用AP模式。在1.0版本之後採用ap+cp模式混合實現註冊中心。

Eureka與Nacos底層實現集群協議那些區別
1、去中心化對等。
2、Raft協議實現集群產生領導角色。

Raft到底是什麼問題 分佈式一致性協議的算法

分佈式系統一致性算法 應用於系統軟件實現集群保持每個節點數據的同步性
保持我們的集群中每個節點的數據的一致性的問題,專業的術語分佈式一致性的算法。

場景:Redis集群、nacos集群、mongdb集群等

Nacos與Eureka區別

最大區別:Nacos支持兩種模式CP/Ap模式 從Nacos1.0版本開始 注意模式就是Ap模式

註冊有哪些?
Eueeka、Nacos、consul、Zookepper

核心:
1、Eureka與Zookeeper實現註冊的區別
2、Eureka與Nacos實現註冊區別
CAP定律概念
一致性(C):在分佈式系統中,如果服務器是計群的情況下,每個節點同一時刻查詢的數據必須保持一致性的問題。
可用性(A):集群節點中,部分的節點出現了故障後仍然可以使用
分區容錯性(P):在分佈式系統中網絡存在腦裂的問題,部分的Server與整個集群失去聯繫

採用:
Cp情況下 雖然我們服務不能用,但是必須要保證數據的一致性
Ap情況下 可以短暫保證數據不一致性,但是最終可以一致性,不管怎麼樣,要能夠保證我們的服務可用

大多的註冊中心都是Ap
3.png

Zab協議集群原理

我們在分佈式系統,存在多個系統之間的集群保持數據一致性,採用CP一致性算法保持數據的一致性問題。
Zookeeper基於ZAP協議實現保持每個節點的數據同步的問題,中心化思想集群模式;
分為領導和跟隨角色。
4.png

在程序中如何成為某個節點能力比較強:
對每個節點配置一個myid或者serverid還有數值越大表示能力越強 或者隨機時間

整個集群中為了保持數據的一致性的問題,必須滿足大多數情況>n/2+1 可運行的節點環境下才可以使用

ZAP的協議實現原理事通過比較myid myid誰最大誰就是為可能是領導角色,只要滿足過半的機制就可以成為領導角色,後來啟動的節點不會參與選舉的。
5.png

Zab協議如何保持數據的一致性問題

所有寫的請求統一交給我們的領導角色實現,領導角色寫完數據之後,領導角色再將 數據同步給每個節點。

注意:數據之間同步採用2pc兩個階段提交協議。

選舉過程:

先去比較zxid zxid誰最大誰就是為領導角色;
如果zxid相等的情況下,myid誰最大誰就為領導角色;
6.png

Raft協議選舉的基本概念

在Raft協議算法中分為角色|名詞:
1、狀態:分為三種 跟隨者、競選者(候選人)、領導角色
2、大多數:>=n/2+1 3/2=1+1=2
3、任期:每次選舉一個新的領導角色 任期都會 實現增加
注意:任何算法都來源於生活
4、競選者誰的票數最多,誰就是為領導角色

存在的疑問:
多個競選者,產生的票數都一樣,這到底誰是領導角色,服務器集群是偶數的情況下

Leave a Reply

Your email address will not be published. Required fields are marked *