微服務系列(四) 服務發現模型

2021-10-14 01:21:05 字數 1589 閱讀 5285

namespace隔離設計

命名空間(namespace)用於進行租戶粒度的隔離,namespace 的常用場景之一是不同環境的隔離,例如開發測試 環境和生產環境的資源(如配置、服務)隔離等。

從乙個租戶(使用者)的角度來看,如果有多套不同的環境,那麼這個時候可以根據指定的環境來建立不同的 namespce,以此來實現多環境的隔離。例如,你可能有開發,測試和生產三個不同的環境,那麼使用一套 nacos 集群可以分別建以下三個不同的 namespace。如下圖所示:

從多個租戶(使用者)的角度來看,每個租戶(使用者)可能會有自己的 namespace,每個租戶(使用者)的配置資料以及注 冊的服務資料都會歸屬到自己的 namespace 下,以此來實現多租戶間的資料隔離。例如超級管理員分配了三 個租戶,分別為張

三、李四和王五。分配好了之後,各租戶用自己的賬戶名和密碼登入後,建立自己的命名 空間。如下圖所示:

資料模型

nacos在經過阿里內部多年生產經驗後提煉出的資料模型,則是一種服務-集群-例項的三層模型,這樣基本可以滿 足服務在所有場景下的資料儲存和管理。在這裡插入描述

服務

對外提供的軟體功能,通過網路訪問預定義的介面。

例項

提供乙個或多個服務的具有可訪問網路位址(ip:port)的程序,啟動乙個服務,就產生了乙個服務例項。

元資訊

nacos資料(如配置和服務)描述資訊,如服務版本、權重、容災策略、負載均衡策略、鑑權配置、各種自定義標 籤 (label),從作用範圍來看,分為服務級別的元資訊、集群的元資訊及例項的元資訊。

集群

服務例項的集合,服務例項組成乙個預設集群, 集群可以被進一步按需求劃分,劃分的單位可以是虛擬集群,相同 集群下的例項才能相互感知。

通過資料模型可知: 應用通過namespace、service、cluster(default)的配置,描述了該服務向哪個環境(如開發環境)的哪個集群 註冊例項。

例如指定namespace的id為a1f8e863-3117-48c4-9dd3-e9ddc2af90a8

指定集群名稱:default表示預設集群,可不填寫

spring::

name

: transaction‐service cloud:

nacos

:discovery

:server‐addr

: 127.0.0.1:

8848

namespace

: a1f8e863‐3117‐48c4‐9dd3‐e9ddc2af90a8

cluster‐name

: default # 預設集群,可不填寫

微服務 四 服務發現 Nacos

在講服務發現之前需要先普及兩個名詞的概念 有部分人更習慣將服務提供者稱為服務端,服務消費者為客戶端。官網文件 什麼是nacos?官網文件已經解釋的很清楚了,簡單來講,nacos是乙個服務發現元件,也是配置伺服器,主要是幫我們解決了兩個問題 服務發現 解決service a怎麼發現service b的...

微服務 服務發現模式

服務發現有三個角色,服務提供者 服務消費者和服務中介。服務中介 聯絡服務提供者和服務消費者的橋梁。服務提供者 將自己提供的服務位址註冊到服務中介。服務消費者 從服務中介那裡查詢自己想要的服務的位址,然後享受這個服務。服務中介提供多個服務,每個服務對應多個服務提供者 服務1 4把當前自己的網路位置註冊...

微服務的服務發現機制

當我們需要遠端訪問rest api或者thrift api時,我們必須得知道服務的網路位址 ip address和port 傳統的應用程式都是執行在固定的物理機器上,ip address和埠號都是相對固定的。可以通過配置檔案方式來實現不定期更新的ip address和埠號。在基於雲的微服務應用中,服...