目录

北极星(Polaris)

腾讯开源的一站式服务发现与治理平台

在微服务与分布式架构里,服务实例动态扩缩容、跨语言调用、跨环境互通是常态,随之而来的服务注册发现、流量控制、故障容错、配置下发等问题都需要一个统一的治理面来承载。北极星(Polaris,项目代号 PolarisMesh)正是腾讯针对这一诉求开源的服务发现与治理平台,在腾讯内部已经支撑了百万级服务注册和十万亿级日接口调用,通用性与稳定性经过大规模验证。

本文整理北极星的应用场景、功能特性、系统组件、数据面接入方式以及部署路径,作为入门与选型参考。

北极星是腾讯开源的云原生服务治理平台,定位为"一站式服务治理平台",覆盖传统上需要分别引入注册中心、服务网格、配置中心才能拼齐的能力。它面向分布式与微服务架构,提供以下五类标准能力:

  • 服务管理:服务注册与发现、健康检查。
  • 流量控制:可定制的路由、负载均衡、限流与访问控制。
  • 故障容错:服务级/接口级/实例级熔断与降级、实例隔离与切换。
  • 配置管理:配置版本管理、灰度发布、动态下发。
  • 可观测性:业务监控、流量监控、事件中心与操作记录。

北极星支持虚拟机、容器以及混合云环境,能够打通 Kubernetes 集群与非 K8s 服务之间的发现与治理。

北极星提供多种数据面(data plane)接入方式,业务可以根据语言和侵入性偏好选择:

  • 多语言 SDK:Polaris-Java、Polaris-Go、Polaris-C/C++、Polaris-PHP、Polaris-Lua 等。
  • Java 框架集成:基于 Polaris-Java 的 Spring Cloud、Spring Boot、Dubbo(注册/路由/熔断/限流)、gRPC Java。
  • Go 框架集成:基于 Polaris-Go 的 Dubbo-Go、gRPC Go。
  • Java Agent:无侵入的字节码增强方案,适合存量 Java 应用零改造接入。
  • Sidecar / 网格代理:通过 Polaris-Sidecar 以代理模式接管流量,适合异构语言统一治理。
  • 网关集成:Spring Cloud Gateway、Nginx 等接入治理能力。

北极星同时支持两种部署形态:

  • Proxyless(无代理):业务直接通过 SDK 或 Agent 完成服务发现与治理,无 sidecar 转发开销,延迟更低。
  • Proxy(代理):通过 sidecar 注入,以服务网格方式接管流量,对业务代码完全透明,便于异构技术栈统一管控。

配合 Polaris-Controller,可以在 Kubernetes 中实现 K8s 服务注册与 sidecar 自动注入,从而支持 K8s 与非 K8s 服务之间、跨多个 K8s 集群之间的统一治理。

熔断支持三个层级,粒度比常见的实例熔断更细:

  • 服务级:整个下游服务不可用时熔断。
  • 接口级:针对特定接口(方法)熔断。
  • 实例级:针对单个实例熔断并隔离切换。

这样可以避免因某个接口或实例的抖动拖垮整体调用链。

北极星代码仓库(polarismesh/polaris,主要语言为 Go)按职责划分了若干核心模块,从控制面和数据面的角度可以归纳如下:

组件角色说明
Polaris-Server控制面处理服务注册、发现、配置、规则下发,是北极星的核心服务。
Polaris-Console控制面Web 管理控制台,提供服务、配置、规则的可视化管理与监控。
Polaris-SDK数据面多语言客户端 SDK,内嵌于业务进程,Proxyless 模式的主要载体。
Polaris-Sidecar数据面以 sidecar 形式运行的代理,Proxy 模式的载体。
Polaris-Controller控制面Kubernetes Controller,实现 K8s 服务注册与 sidecar 自动注入。

从仓库源码组织上看,Polaris-Server 内部进一步划分为 apiserver(协议接入层,如 gRPC/HTTP)、service(核心服务逻辑)、store(持久化层)、cache(缓存层)、config(配置管理)、namespace(命名空间)、auth(鉴权)、plugin(插件体系,如存储、鉴权后端可扩展)等模块。这种分层设计使得存储后端、鉴权方式可以按需替换。

北极星的部署有两条主流路径:自建开源版本使用腾讯云托管服务

社区提供 Docker 镜像(polarismesh/polaris-server,发布在 Docker Hub)以及二进制包,具体的安装步骤、端口规划、依赖组件清单随版本变化,建议以仓库 release/ 目录的安装指南和 Releases 页面为准:

自建模式适合对数据合规、定制化、成本敏感,且具备一定运维能力的团队,需要自行承担集群高可用、监控告警、版本升级等工作。

腾讯云在 TSF(Tencent Service Framework,腾讯微服务平台)下提供了"注册配置治理中心 - Polaris"的托管形态,主打快速部署、高可用容灾、免运维、一键搭建北极星网格能力。创建实例的关键选项包括:

  • 产品版本:Enterprise(注册+配置+治理)、Basic(注册+配置)、Developer(单节点 1C1G,仅供试用)、Standard(多节点)。
  • 开源版本:控制台显示支持的开源内核版本(例如文档示例中为 1.9.0.1,实际以购买页为准)。
  • 集群网络:VPC 需与业务 VPC 一致,子网可以不一致。
  • 规格:按服务实例配额选择。

实例创建后,根据语言/框架选择接入方式:

  • Java:Spring Cloud、Java Agent 或 polaris-Java SDK。
  • Go:polaris-Go 或 gRPC-Go SDK。
  • 其他:参考 TSF 控制台提供的接入文档与 Eureka 迁移指南。

托管模式适合希望快速落地、不想自建控制面的团队,但需注意网络连通性与计费方式(按量付费或包月)。

结合社区文档与典型用户案例,北极星常用于以下场景:

  • 多语言微服务统一治理:同一套控制面同时支撑 Java、Go、C++ 等多语言业务,避免每种语言各搞一套注册中心。
  • K8s 与非 K8s 混合互通:存量虚拟机业务与容器化业务统一发现,平滑迁移。
  • 流量精细化管控:灰度发布、按元数据路由、按接口粒度限流熔断。
  • 存量 Java 应用零改造接入:通过 Java Agent 方式,无需改动代码即可获得治理能力。

公开的采用方包括腾讯云、微信支付、腾讯视频、腾讯会议,以及贝壳找房、BOSS 直聘、OPPO 等外部公司,覆盖金融、房产、招聘、终端厂商等多个行业。

如果你的团队面临"既要注册中心,又要配置中心,还要服务网格"的拼装成本问题,北极星"一站式"的定位值得作为候选。选型时可以重点考察:

  • 业务语言与框架是否在官方 SDK/集成列表内。
  • 是否需要 Proxy 模式(网格)还是 Proxyless(SDK/Agent)即可满足。
  • 是否跨 K8s 与非 K8s 环境,需要 Polaris-Controller。
  • 团队运维能力,决定自建开源版还是使用云托管。

相关内容