###服務間呼叫問題?
存在問題待解決?
在這裡插入描述
註冊中心:
dubbo體系中的zookeeper
spring cloud中的eureka 和 consul
zookeeper定義
分布式協調中介軟體
背景
google chubby 服務為了解決分布式一致性問題而出現。
場景:google chubby 有個檔案系統(gfs),五個服務,需要選出乙個master server,其餘節點同意,如何達到一致性?
原理:5個服務都向乙個主服務 google server 建立檔案並且寫入自己位址,保證只有乙個服務寫入成功,其他服務通過讀取這個檔案就能知道這個master server 已經選出。
另乙個層面看:這種服務也是粗粒度的分布式鎖服務,建立檔案就相當於加鎖操作。
然而google chubby並不開源,雅虎基於chubby 思想開發 類似的分布式 元件 zookeeper,後來捐獻給apache。
所以zookeeper的出現不是為了 註冊中心而設計,是為了服務一致性、分布式鎖而設計,而註冊中心能實現的一種功能。
一致性問題
定義理解:分布式節點達到一致性:細粒度可理解投票(意見)一致性、資料同步一致等等。
本質:在分布式服務系統中,就某個提議達到一致
大名鼎鼎 paxos協議出現就是為了在不可信的 網路環境中,按照 paxos 這個協議就能夠針對某個提議達成一致。
zookeeper設計角色
leader:處理事務請求、排程者
follower:處理非事務請求、**事務請求 、參與投票
observer:與follower唯一區別的是不參與投票
分布式節點資料同步問題?
分布式事務問題?
2pc提交、3p提交
leader選舉?
2n+1個服務組成、必須過半
zookeeper的安裝?
單機安裝
解壓 tar -zxvf
cp conf/zoo_sample.cfg zoo.cfg
vi zoo.cfg 修改datadir日誌存放目錄
集群安裝(2n+1)
單機安裝3臺 準備好
修改zoo.cfg 埠
建datadir目錄,設定myid檔案 datadir/myid檔案,內容是對應的 server id
zoo.cfg檔案
server.1=ip1:2888:3888 【2888:訪問 zookeeper 的埠;3888:重新選舉 leader 的埠】 ser server.2=ip2.2888:3888
ser ver.3=ip3.2888:2888新
myid檔案
1
相關命令
bin/zkserver.sh start
bin/zkserver.sh status
bin/zkserver.sh stop
bin/zkserver.sh restart
zkcli.sh -timeout 0 -r -server ip:port
Eureka 註冊中心
角色 1 服務提供者 2 服務消費者 3 服務註冊中心 a.高ha 支援資料持久化和服務集群 b.資料一致性問題,集群中的所有客戶應該看到同乙份資料不能出現讀寫資料不一致 c.資料變更主動推送,當註冊中心的資料發生變更時要及時通知客戶端 關鍵性功能設計 1 服務提供者在啟動時,向註冊中心註冊自己提供...
Dubbo zookeeper註冊中心
2.修改配置檔案 3.啟動zookeeper 經過上面的配置我們已經完成了zookeeper的修改,下面我們進入bin目錄執行zkserver.cmd 如果是linux伺服器則執行zkserver.sh 如下圖,我們已經啟動zookeeper 4.修改註冊中心 下面我們只需修改服務端和客戶端的註冊中...
Dubbo註冊中心
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!推薦使用zookeeper註冊中心,不需要啟動任何中心節點,只要廣播位址一樣,就可以互相發現 組播受網路結構限制,只適合小規模應用或開發階段使用。組播位址段 224.0.0.0 239.255.255.255 提供方啟動時廣播自己的位址。消費方啟動...