當我們需要遠端訪問rest api或者thrift api時,我們必須得知道服務的網路位址(ip address和port)。
傳統的應用程式都是執行在固定的物理機器上,ip address和埠號都是相對固定的。可以通過配置檔案方式來實現不定期更新的ip address和埠號。
在基於雲的微服務應用中,服務例項的網路位址(ip address和port)是動態分配的,並且由於系統的auto-scaling, failures 和 upgrades等因數,一些服務執行的例項數量也是動態變化的。因此,客戶端**需要使用乙個非常精細和準確的服務發現機制。
服務發現主要有兩種方式:客戶端發現和服務端發現
2.1.1 發現過程
2.1.2 應用舉例:netflix oss
netflix oss就是使用客戶端發現方式的乙個很好的例子。
2.1.3 優缺點
缺點:具有非常強的耦合性,針對不同的語言,每個服務的客戶端都得實現一套服務發現的功能。
2.2.1 發現過程
服務端:和客戶端發現一樣,服務啟動的時候,向服務註冊中心註冊服務;在服務停止的時候,向服務註冊中心登出服務。
客戶端:客戶端向load balancer 傳送請求,load balancer 查詢服務註冊中心找到可用的服務,然後**請求到該服務上。
2.2.2 應用舉例:kubernetes
kubernetes集群中每個節點都執行乙個**來實現服務發現的功能的,**的角色就是server-side discovery,客戶端通過使用主機的ip address和port向proxy傳送請求,proxy再將請求**到集群中任何乙個可用的服務上。
2.2.2 優缺點
服務註冊中心是服務發現的核心,它儲存了各個可用服務例項的網路位址(ip address和port)。服務註冊中心必須要有高可用性和實時更新功能。
服務註冊和登出有兩種方式:self-registration和third-party registration
third-party registration:服務本身不必關心註冊和登出功能,而是通過其他元件(service registrarhandles)來實現服務註冊功能,可以通過如事件訂閱等方式來監控服務的狀態,如果發現乙個新的服務例項執行,就向註冊中心註冊該服務,如果監控到某一服務停止了,就向註冊中心登出該服務
參考
微服務 服務發現模式
服務發現有三個角色,服務提供者 服務消費者和服務中介。服務中介 聯絡服務提供者和服務消費者的橋梁。服務提供者 將自己提供的服務位址註冊到服務中介。服務消費者 從服務中介那裡查詢自己想要的服務的位址,然後享受這個服務。服務中介提供多個服務,每個服務對應多個服務提供者 服務1 4把當前自己的網路位置註冊...
微服務 四 服務發現 Nacos
在講服務發現之前需要先普及兩個名詞的概念 有部分人更習慣將服務提供者稱為服務端,服務消費者為客戶端。官網文件 什麼是nacos?官網文件已經解釋的很清楚了,簡單來講,nacos是乙個服務發現元件,也是配置伺服器,主要是幫我們解決了兩個問題 服務發現 解決service a怎麼發現service b的...
微服務 Consul(服務註冊發現)
類似dns伺服器會根據我們的網域名稱解析出乙個ip位址,然後去請求這個ip來獲取我們想要的資料,它可以讓我們只需說我想要什麼服務即可,而不必去關心服務提供者的具體網路位置 ip 位址 埠等 目前,服務發現主要分為兩種模式,客戶端模式與服務端模式 在客戶端模式下,首先要到服務註冊中心獲取服務列表,然後...