本文來自于《精通Spring Cloud Alibaba》課程的整理,講師為餘勝軍,
點選檢視視訊内容。
本文系志願者整理,供配合學習中心課程使用,不做商業用途。
服務注冊與發現nacos
Nacos産生的背景
Nacos分布式注冊與發現功能 | 分布式配置中心
産生背景rpc遠端調用中,服務的url的治理
Rpc的遠端調用架構 HttpClient、gprc、dubbo、rest、openfeign等。
傳統的rpc遠端調用中存在哪些問題
1、逾時的問題
2、安全的問題
3、服務與服務之間URL位址管理
在我們微服務架構通訊,服務之間依賴關系非常大,如果通過傳統的方式管理我們服務的url位址的情況下,一旦位址發生變化的情況下,還需要人工修改rpc遠端調用位址。

服務治理基本的概念
每個服務的url管理位址非常複雜,是以這時我們采用服務url治理技術,可以整個實作動态服務注冊與發現、本地負載均衡、容錯等。
rpc遠端調用中,位址中 域名和端口号/調用的方法名稱:
域名和端口号/調用的方法名稱
192.168.212.110:8080/getUser
方法名稱不會改變,但是域名和端口号有可能會改變。
之前的處理方式是把每個伺服器位址資訊和端口人工存放到資料庫表中
Id serviced ip 端口号
Mayikt-member 192.168... 8082
Mayikt-member 192.168... 8081
基于資料庫形式實作服務url治理:
缺點:維護成本非常高、沒有完全絕對實作動态智能
那麼思考是否有更好的方案?
微服務中的注冊中心。
整個微服務架構中最為核心的肯定是 注冊中心。
注冊中心:實際就是存放我們整個微服務中的服務的位址資訊,能夠實作動态感覺。
注冊中心:Dubbo依賴Zookeeper、Eureka、Consul、Nacos、Redis、資料庫
服務注冊中心的概念
每次調用該服務如果位址直接寫死的話,一旦接口發生變化的情況下,這時候需要重新釋出版本才可以該接口調用位址,是以需要一個注冊中心統一管理我們的服務注冊與發現。
注冊中心:我們的服務注冊到我們注冊中心,key為服務名稱、value為該服務調用位址,該類型為集合類型。Eureka、consul、zookeeper、nacos等。
服務注冊:我們生産者項目啟動的時候,會将目前服務自己的資訊位址注冊到注冊中心。
服務發現: 消費者從我們的注冊中心上擷取生産者調用的位址(集合),在使用負載均衡的政策擷取叢集中某個位址實作本地rpc遠端調用。
微服務調用接口常用名詞
整個微服務的注冊中心實作原理
生産者:提供接口被其他服務調用
消費者:調用生産者接口實作消費
服務注冊:提供服務接口位址資訊存放
服務發現:
服務注冊原理實作:
1、生産者啟動的時候,key=服務的名稱 value= ip 和端口号,注冊到我們的微服務注冊中心上。
Mayikt-member 192.168.212.110:8080
Mayikt-member 192.168.212.110:8081
2、注冊存放服務位址清單類型:key唯一,清單是list集合。
May<Key,List(String)>
{
Mayikt-member:["192.168.212.110.8080" "192.168.212.110.8081"]
}
3、我們的消費者從我們注冊中心上根據服務名稱查詢服務位址清單(集合)
Mayikt-member===["192.168.212.110.8080" "192.168.212.110.8081"]
4、消費者擷取到叢集清單之後,采用負載均衡器選擇一個位址實作rpc遠端調用
Nacos的基本的介紹
Nacos可以實作分布式服務注冊與發現/分布式配置中心架構。
預設的端口号是8848。
官網的介紹:
https://nacos.io/zh-cn/docs/what-is-nacos.htmlNacos的環境的準備
Nacos可以在linux/windows/Mac版本上都可以安裝
具體安裝教程位址:
https://nacos.io/zh-cn/docs/quick-start.html登入預設的賬号和密碼是 nacos nacos ,登入之後顯示如下的界面:
手動實作服務注冊與發現
1.實作服務注冊
發送post請求:
'
http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=80802.實作服務發現
http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName詳細步驟操作: