Spring Cloud Tencent 騰訊開源的一站式微服務解決方案

吳語擇崗 發佈 2024-01-09T04:42:58.337574+00:00

Spring Cloud Tencent 是騰訊開源的一站式微服務解決方案。

Spring Cloud Tencent 是騰訊開源的一站式微服務解決方案。
Spring Cloud Tencent 實現了Spring Cloud 標準微服務 SPI,開發者可以基於 Spring Cloud Tencent 快速開發 Spring Cloud 雲原生分布式應用。 Spring Cloud Tencent 的核心依託騰訊開源的一站式服務發現與治理平台 PolarisMesh ,實現各種分布式微服務場景。

一、 PolarisMesh 是什麼?

北極星是騰訊開源的服務治理平台,致力於解決分布式和微服務架構中的服務管理、流量管理、配置管理、故障容錯和可觀測性問題,針對不同的技術棧和環境提供服務治理的標準方案和最佳實踐。下面介紹北極星的應用場景、功能特性、系統組件和常見問題。支持多語言、多框架的雲原生服務治理平台,服務管理、流量管理、故障容錯、配置管理、可觀測性。

1.1 一站式服務治理平台

北極星為服務治理提供一站式解決方案,覆蓋服務註冊中心、服務網格和配置中心的功能,提供業務監控、流量監控、事件中心和操作記錄等全方位的可觀測性能力,幫助用戶快速構建微服務架構。

1.2 支持異構技術棧和環境

通過 Proxyless 和 Proxy 兩種形態實現服務發現和治理,提供多語言 SDK、開發框架、Java Agent 和網格代理等接入方式,支持虛擬機、容器和混合雲等部署環境,滿足不同業務場景和開發模式。

1.3 支持常用開發框架

提供 Spring Cloud,Dubbo 和 gRPC 等開發框架無縫集成北極星的依賴包,使用開發框架的用戶不需要改動業務代碼即可接入。

1.4 兼容 Kubernetes

提供 K8s Controller,支持 K8s 服務註冊和網格代理注入,可以實現 K8s 和非 K8s 服務、多個 K8s 集群之間的服務發現和治理。

二、具備那些功能?

北極星具備服務管理、流量管理、故障容錯、配置管理和可觀測性五大功能:

  • 服務管理:包含服務發現、服務註冊、健康檢查和元數據管理。 服務發現:支持 HTTP、SDK 和 DNS 服務發現方式。服務註冊:支持 HTTP、SDK、控制台操作和 K8s 服務註冊方式。健康檢查:支持服務實例上報心跳,通過心跳判斷實例是否健康,及時剔除異常實例。元數據管理:支持在服務和實例上配置協議、版本和位置等標籤,實現動態路由等功能。
  • 流量管理:包含動態路由、負載均衡和訪問限流。 動態路由:支持自定義路由策略,將服務的部分請求路由到部分實例,用於灰度發布等應用場景。負載均衡:支持權重輪訓、權重隨機和權重一致性 Hash 等負載均衡算法。訪問限流:支持本地和分布式兩種模式,被限流的請求支持排隊和自定義響應。
  • 故障容錯:包含服務熔斷和節點熔斷。 服務熔斷:對服務或者接口進行熔斷,如果服務或者接口發生熔斷,返回自定義響應。節點熔斷:對服務實例進行熔斷,不會將請求路由到熔斷的服務實例,降低請求失敗率。主動探測:服務和節點熔斷除了被動探測,還支持主動探測,進一步降低請求失敗率。
  • 配置管理:包含配置變更、配置校驗、版本管理和灰度發布等功能。
  • 可觀測性:提供業務流量、系統事件和操作記錄等監控視圖。

北極星的功能需要控制面和數據面配合實現:

  • 控制面:負責服務和配置數據的管理和下發,負責流量管理和熔斷降級策略的管理和下發。
  • 數據面:負責全部服務發現和治理功能的客戶端實現,採用插件化設計,支持按需加載和使用。

數據面功能分為三個部分:

  • 服務作為被調:當一個服務被其他服務調用時,可以使用服務註冊、上報心跳、訪問限流和訪問鑒權功能。
  • 服務作為主調:當一個服務調用其他服務時,可以使用服務發現、動態路由、負載均衡和熔斷降級功能。
  • 公共部分:支持拉取配置數據和上報監控數據

三、 包含那些組件

北極星的系統組件分為控制台、控制面和數據面三個部分:

  • 控制台:提供簡單易用的管理頁面,支持用戶和權限管理。
  • 控制面:包含核心組件 Polaris 和可選的功能組件,核心組件可以滿足絕大部分業務需求,可選的功能組件按需部署。
  • 數據面:提供多語言 SDK、開發框架、Java Agent 和網格代理四種形態的實現,滿足不同的業務場景和開發模式,支持異構服務的互聯互通和統一治理。

控制面組件:

  • Polaris:支持各種形態的數據面接入,支持服務和配置數據的管理和下發,支持流量管理和熔斷降級策略的管理和下發,可以覆蓋服務註冊中心、服務網格控制面和配置中心的功能。
  • Polaris Controller:可選的功能組件,支持 K8s 服務同步和網格代理注入。K8s 服務同步將 K8s 服務按需同步到北極星,用戶不需要在應用程式里顯式地註冊服務。網格代理注入按需在應用程式 Pod 里注入北極星 Sidecar,以流量代理的方式實現服務發現和治理功能。

數據面組件:

  • SDK:北極星提供輕量級的多語言 SDK,使用方法和絕大部分客戶端軟體類似,用戶在應用程式里引入北極星 SDK。這種數據面形態以無流量代理的方式實現服務發現和治理功能,沒有額外的性能和資源損耗,不會增加現網運維和問題定位的成本。
  • 開發框架:北極星 SDK 可以被集成到開發框架內部,如果用戶使用開發框架,不需要顯式地引入北極星 SDK。對於 Spring Cloud、Dubbo 和 gRPC 等開發框架,北極星提供可以無縫集成的依賴包。另外,go-micro、go-kratos、go-zero、GoFrame 和 CloudWeGo 等開發框架社區也提供北極星插件。
  • Java Agent:對於 Spring Cloud 和 Dubbo 等 Java 開發框架,北極星支持 Java 生態常用的 Agent 接入模式。用戶只需要在應用程式的啟動命令中引入 Polaris Java Agent,即可將北極星的服務發現和治理功能引入應用程式,不需要改動任何代碼和配置文件。
  • 網格代理:北極星網格代理在應用程式 Pod 里注入 Polaris Sidecar 和 Proxy,前者通過劫持 DNS 解析將請求轉到後者,後者通過流量代理實現服務發現和治理功能。這種數據面形態適合性能和資源損耗不敏感的業務,要求業務具備網格代理的運維能力。

四、環境體驗

  • 管控台地址: http://14.116.241.63:8080/ 帳號:polaris密碼:polaris
  • 控制面地址: gRPC://183.47.111.80:8091

spring-cloud-tencent-example 下 example 地址都默認指向了體驗服務地址(grpc://183.47.111.80:8091),如果您只是體驗 Spring Cloud Tencent,可直接一鍵運行任何 example。

五、項目概覽

5.1 pom 結構圖

5.2 模塊依賴圖

5.3 模塊說明

模塊名

模塊說明

spring-cloud-tencent-commons

所有模塊的基礎模塊,定義最核心的工具類,數據模型

spring-cloud-tencent-plugin-starters

插件模塊,提供常見場景的快速應用

spring-cloud-tencent-polaris-context

polaris 的上下文模塊,例如裝載 polaris 服務的地址信息等。所有 polaris starter 都依賴此模塊

spring-cloud-tencent-polaris-loadbalancer

polaris 的負載均衡模塊,用於承載 polaris 的路由插件

spring-cloud-tencent-rpc-enhancement

RPC調用增強模塊,提供 Feign、RestTemplate 的增強拓展功能

spring-cloud-starter-tencent-metadata-transfer

擴展 feign 的能力,自動在鏈路上傳遞元信息。例如用於路由標籤信息傳遞、tracer上下文信息傳遞等

模塊名

模塊說明

spring-cloud-starter-tencent-polaris-discovery

北極星的服務發現模塊

spring-cloud-starter-tencent-polaris-ratelimit

北極星的限流模塊

spring-cloud-starter-tencent-polaris-circuitebreaker

北極星的熔斷模塊

spring-cloud-starter-tencent-polaris-router

北極星的路由模塊

spring-cloud-starter-tencent-polaris-config

北極星的配置中心模塊


5.4 目錄結構

spring-cloud-tencent
  |
  -- pom.xml 
  |
  -- spring-cloud-tencent-dependencies
  |
  -- spring-cloud-tencent-examples
  |
  -- spring-cloud-tencent-commons
  |
  -- spring-cloud-tencent-polaris-context
  |
  -- spring-cloud-tencent-polaris-loadbalancer
  |
  -- spring-cloud-starter-tencent-metadata-transfer
  |
  -- spring-cloud-starter-tencent-polaris-discovery
  |
  -- spring-cloud-starter-tencent-polaris-ratelimit
  |
  -- spring-cloud-starter-tencent-polaris-circuitbreaker
  |
  -- spring-cloud-starter-tencent-polaris-router
  |
  -- spring-cloud-starter-tencent-polaris-config
  |
  -- spring-cloud-tencent-rpc-enhancement
  |
  -- spring-cloud-tencent-plugin-starters
      |
      -- spring-cloud-tencent-featureenv-plugin
      |
      -- spring-cloud-tencent-gateway-plugin

六、 開源地址

github: https://github.com/Tencent/spring-cloud-tencent

gitee: https://gitee.com/Tencent/spring-cloud-tencent

關鍵字: