鵝長微服務發現與治理巨作PolarisMesh實踐-上( 三 )


  • RPC調用過程的參與者主要涉及兩個角色:主調方和被調方 。
  • 首先,被調方使用服務注冊功能 , 向北極星注冊自身服務數據,包括節點列表,治理規則等 。
  • 第二,主調方通過服務發現功能,拉取被調方的全量服務數據 。
  • 第三,主調方通過路由和負載均衡功能,篩選出一個合適的被調方實例,進行RPC調用 。
  • 第四,主調方記錄RPC調用的成功失敗結果,通過熔斷降級功能,剔除出現故障的被調方節點 。
  • 第五 , 北極星通過健康檢查功能,主動剔除已經下線的被調方節點 。
  • 第六,被調方通過訪問限流功能 , 保護自身不被主調方的異常流量給擊潰 。
服務注冊服務注冊指的是被調方按照服務模型將自身的服務數據注冊到PolarisMesh , 以供主調方進行服務發現 。服務數據主要包括以下部分:
  • 服務名:服務的唯一標識,區分大小寫 。
  • 服務元數據:服務的標簽信息 , KV格式,可對服務進行分類 , 可用于過濾 。
  • 服務實例:提供服務的節點列表,以IP:PORT的方式提供 。
  • 服務實例元數據:服務實例的標簽信息,KV格式,通常用于描述節點的集群、版本等,用于后續流量治理等操作 。

鵝長微服務發現與治理巨作PolarisMesh實踐-上

文章插圖
支持以下4種服務注冊方式:
  • 通過SDK注冊:北極星提供了多語言SDK,服務可以通過集成SDK,調用registerInstance接口完成服務注冊 。
  • 通過服務框架注冊:服務一般與服務框架集成(比如Spring Cloud Tencent (opens new window)) , 框架本身會提供服務自動注冊功能,服務啟動后,框架會將服務信息自動注冊到北極星 。
  • 通過k8s同步的方式注冊:用戶通過k8s部署服務,并注冊為k8s的service,北極星通過controller的機制,從k8s中將service和endpoint信息同步到北極星 , 完成服務注冊 。
  • 通過OpenAPI注冊:北極星控制面提供基于Rest標準的OpenAPI,用戶可通過OpenAPI完成服務注冊的操作 。
服務發現服務發現指的主調方是根據服務名標識,拉取服務實例列表,以供后續進行服務調用的操作 。
鵝長微服務發現與治理巨作PolarisMesh實踐-上

文章插圖
支持以下4種方式進行服務發現:
  • 通過SDK服務發現:北極星提供了多語言SDK,服務可以通過集成SDK,調用getAllInstances接口完成全量服務列表拉取 。
  • 使用框架服務發現:北極星支持對接多個主流的服務框架(比如Spring Cloud Tencent (opens new window)),主調方服務通過服務框架進行發現RPC請求,即可通過框架內部擴展機制使用北極星服務發現能力 。
  • 使用sidecar服務發現:北極星提供服務網格能力 , 服務程序可以基于sidecar的方式,通過DNS或者流量攔截,進行服務發現 。
  • 使用OpenAPI服務發現:北極星控制面提供基于Rest標準的OpenAPI , 用戶可通過OpenAPI完成服務發現的操作 。
安裝部署架構由于單機安裝比較簡單,我們這里就直接選擇集群安裝,準備好兩臺部署服務器,而MySQL、Redis、Promethes的安裝可以參考前面對應的文章 , 這里就直接使用 。
鵝長微服務發現與治理巨作PolarisMesh實踐-上

文章插圖
組件類型功能說明polaris最新stable版本系統組件服務治理控制面polaris-console最新stable版本系統組件服務治理控制臺MySQL>= 5.7第三方依賴服務數據存儲Redis>=4.0第三方依賴心跳狀態數據緩存Prometheus>=2.28.0第三方依賴可觀測性集群安裝
  • 初始數據導入
# 下載polaris最新版本v1.12.1wget https://github.com/polarismesh/polaris/releases/download/v1.12.1/polaris-server-release_v1.12.1.linux.amd64.zip# 下載polaris-console最新版本v1.9.1wget https://github.com/polarismesh/polaris-console/releases/download/v1.9.1/polaris-console-release_v1.9.1.linux.amd64.zip# 解壓polaris-serverunzip polaris-server-release_v1.12.1.linux.amd64.zip# 解壓polaris-consoleunzip polaris-console-release_v1.9.1.linux.amd64.zip# 進入polaris-server目錄cd polaris-server-release_v1.12.1.linux.amd64# 執行mysql腳本導入到mysql數據庫mysql -u root -p 123456 -h 192.168.50.100 < store/sqldb/scripts/polaris_server.sql將文件拷貝到兩臺服務器上,下面操作兩臺一樣