來自GO 夜讀 學(xué)習(xí)筆記
學(xué)習(xí)來源:https://www.bilibili.com/video/BV18E411o7c5?from=search&seid=1560428182298849204
(1)關(guān)于Micro Api的說明
(2)關(guān)于Micro web的說明
(3)關(guān)于Micro Proxy的說明
(4) 關(guān)于GO-Micro 框架模塊
(5)關(guān)于GO-Micro 基礎(chǔ)組件調(diào)用關(guān)系
流程說明:
每一個(gè)Service服務(wù)都有一個(gè)Cilent 和Server
:1 Service啟動(dòng)時(shí)候調(diào)用注冊(cè)模塊椅贱,注冊(cè)的到我們的注冊(cè)中 Consul.
:2 另一個(gè)服務(wù)客戶端Cilent ,如果需要調(diào)用另一個(gè)服務(wù)Server,首選這個(gè)服務(wù)的客戶端Cilent 去調(diào)用Selector選擇器查詢,
:3 Selector選擇器通過Registry再去查詢需要元數(shù)據(jù)信息砌梆,
如果元數(shù)據(jù)信息沒有不存在的話 Registry會(huì)想注冊(cè)中心Consul獲取服務(wù)元數(shù)據(jù)信息岗照,然后返返回給Registry
:4 Registry向想注冊(cè)中心Consul獲取服務(wù)元數(shù)據(jù)信息,然后返返回給Registry傳遞給客戶端
:5 客戶端開始對(duì)相關(guān)的元數(shù)據(jù)信息進(jìn)行編碼鲫懒,編碼完成后蚁堤,就發(fā)送 客戶端Cilent 側(cè)的Transport模塊
:6 客戶端Cilent 側(cè)Transport模塊 發(fā)送到客戶端Cilent 側(cè)Codec模塊進(jìn)行編碼----
:7 Cilent 側(cè)Codec模塊 將消息發(fā)送另一個(gè)服務(wù)Server中的 Codec 然后進(jìn)行解碼醉者,然后進(jìn)行業(yè)務(wù)邏輯處理
go-micro中服務(wù)發(fā)現(xiàn)和注冊(cè):
(6)關(guān)于GO-Micro 其他組件
(7)關(guān)于GO-Micro 中的Registry注冊(cè)組件
注冊(cè)主鍵主要幾個(gè)接口信息:
- 服務(wù)的注冊(cè),服務(wù)的卸載披诗,服務(wù)的獲取撬即,監(jiān)聽服務(wù)變動(dòng),獲取服務(wù)列表
- 服務(wù)和服務(wù)間是不是直接調(diào)用中間件藤巢,是通過自身內(nèi)部注冊(cè)模塊進(jìn)行調(diào)用中間件查詢的
GO-Micro 中的注冊(cè)類型:
:1 基于通用型注冊(cè)中心搞莺,如Etcd息罗、Consul掂咒、Zookeeper、Eureka(已停更了)
:2 基于網(wǎng)絡(luò)廣播,如mDNS绍刮、Gossip
:3 基于消息中間件温圆,如NATs
Registry注冊(cè)組件類型介紹
(1) Registry注冊(cè)方式---通用性注冊(cè)中心,Consul注冊(cè)方式類型(中心化):
流程:
:1 服務(wù)啟動(dòng)后把元數(shù)據(jù)信息注冊(cè)到注冊(cè)中心
:2 需要服務(wù)調(diào)用就問Consul獲取
(2) Registry注冊(cè)方式---基于廣播域名解析的方法【mDNS:多路廣播域名解析】:
流程:
假設(shè)存在4個(gè)服務(wù) (M A,B,C四個(gè)服務(wù))
:1 M 問誰是服務(wù)A孩革,廣播一個(gè)誰是A的消息
:2 廣播到所有的服務(wù)上岁歉,問誰是A服務(wù)(A,B,C服務(wù)都收到廣播信息)
:3 B,C服務(wù)不響應(yīng),A服務(wù)響應(yīng)(廣播消息出去膝蜈,此時(shí)其他服務(wù)都知道A再哪里,B锅移,C也收到)
(3) Registry注冊(cè)方式---基于消息中間件【基于NATs消息系統(tǒng)Pub/Sub注冊(cè)】:
(8)關(guān)于GO-Micro 中的Selector 選擇器組件
8.1)職責(zé)
負(fù)責(zé)負(fù)載均衡
8.2)工作原理
假設(shè)有三臺(tái)服務(wù)(B1,B2,B3),A服務(wù)調(diào)用B服務(wù)的時(shí)候
流程:
:1 A服務(wù)客戶端Client,調(diào)用Selector選擇器組件查詢B服務(wù)的地址信息
:2 A服務(wù)客戶端Client中的Selector組件回去 A服務(wù)客戶端Client中的Registry組件獲取B的信息,選擇器Selector拿到相關(guān)的B信息(3臺(tái)的列表信息)
:3 A服務(wù)客戶端Client中的Selector組件根據(jù)算法(輪詢饱搏,隨機(jī))獲取列表中的一臺(tái)B服務(wù)的信息