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

  • 多語言應用開發:支持Java、Go、C、C++、PHP、Lua,不劫持業務請求,幾乎不增加請求延時,CPU 消耗低,不需要部署和運維 Sidecar 。支持 grpc 等框架和北極星 SDK 的集成,框架用戶不需要直接使用北極星 SDK 。比如:
    • Java應用開發:polaris-java(Polaris Java客戶端實現)、grpc-java-polaris(使用grpc-java與polaris-java的集成)、spring-cloud-tencent(SpringCloud與騰訊開源中間件的集成解決方案)、spring-boot-polaris(SpringBoot與polaris-java的集成)、polaris-java-agent(polaris-java注入到SpringCloud和Dubbo) 。
    • Go應用開發polaris-go(Polaris Go客戶端)、grpc-go-polaris(grpc-java與polaris-go的集成)、go-kratos(go-kratos與polaris-go的集成)、go-zero(go-zero與polaris-go的集成)、go-frame(go-frame與polaris-go的集成)、dubbo-go(dubbo-go與polaris-go的集成)、kitex(kitex與polaris-go的集成) 。
  • Sidecar:劫持業務請求,有一定的請求延時,CPU 消耗較高,適用于無侵入的開發場景 。
  • JavaAgent:對于Java的應用,直接通過字節碼的方式加載到進程中,通過攔截器實現無感的接入 。
  • 支持 nginx 等網關和北極星 SDK 的集成 , 支持網關將請求轉發到北極星服務 。
  • 支持 k8s service 自動注冊到北極星,實現 k8s service 和框架服務的統一管理 。
  • 特色亮點
    • 一站式服務治理中心:集服務注冊中心和服務治理控制面于一體,幫助業務解決分布式或者微服務架構面臨的注冊發現、故障容錯、流量控制和安全問題 。
    • 支持多種開發語言:提供Java、Go和C++等多種高性能、功能語義相同的SDK,可以輕松集成到不同的技術棧,幫助企業實現統一的服務發現和治理 。
    • 支持常用開發框架:北極星服務治理SDK可以集成到gRPC和Spring Cloud等開發框架中,幫助框架完善服務治理功能 ??蚣苡脩舨桓兄?nbsp;, 接入成本低 。
    • 支持Kubernetes:提供原生的k8s polaris-controller,支持k8s service自動注入,幫助k8s無縫兼容微服務框架體系,實現跨集群的服務發現和治理 。
    • 服務網格:提供高性能SDK和無侵入Sidecar兩種接入方式,采用SDK和Sidecar的服務可以互相訪問,功能語義相同,適用于不同的業務場景 。
    • 大規模生產應用:騰訊服務治理中心的開源版本,為騰訊百萬服務提供標準的服務治理功能,沉淀了騰訊從虛擬機到容器時代的分布式服務治理經驗
    解決哪些問題在分布式架構及微服務架構實施過程中,業務可能面臨以下四類問題 。北極星以服務為中心,提供一站式解決方案 。
    鵝長微服務發現與治理巨作PolarisMesh實踐-上

    文章插圖
    官方性能數據在長時間的壓力測試下,不同規格的北極星集群均維持正常運行狀態,集群可承載的實例容量從1k實例到10w實例,相關依賴組件的系統資源消耗也均在預期內 , 并未出現相關依賴組件高負載不可用現象 。通過壓測 , 不同規格的北極星集群可以穩定支撐服務實例數量均滿足預期 。
    • 注冊實例的TPS最高可達35912,符合接口預期
    • 服務發現的QPS最高可達116021,符合接口預期
    • 實例心跳的TPS最高可達78077,符合接口預期
    • 注銷實例的TPS最高可達14356,符合接口預期
    架構原理資源模型PolarisMesh的資源模型與前面學習Nacos很相似,包括如下:
    • 命名空間:提供了一種在相同注冊中心下資源的邏輯隔離的機制 , 同一命名空間下的資源命名必須唯一 , 但是跨命名空間允許存在同名的資源 。命名空間常用于多個團隊或者項目之間的資源的區分隔離 。
    • 服務:一種資源對外暴露的抽象方式,資源本身通過端口監聽的方式提供網絡訪問,并通過提供一系列預定義的服務接口,給主調端進行調用 。
    • 實例分組:是由一個或多個具有相同標簽屬性的實例組成 , 這些實例往往具備相同的特征,比如屬于同一版本、屬于同一個地域、屬于同一環境 。
    • 服務實例:對應的是暴露一個或多個API接口供主調應用進行網絡調用的節點,通過IP:PORT的方式進行唯一標識 。
    服務治理基本原理PolarisMesh是服務發現與治理中心,其主要應用在微服務之間的RPC調用過程中服務可見、流量控制、故障容錯等場景 , 涉及服務注冊、服務發現、動態路由、負載均衡、健康檢查、訪問限流、熔斷降級 。
    鵝長微服務發現與治理巨作PolarisMesh實踐-上

    文章插圖
    整體流程如下:

    推薦閱讀