这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

参考文档

北极星相关的参考文档,包含版本信息、接口文档、测试报告和开发者文档等。

1 - 版本信息

1.1 - 版本升级指南

服务端与控制台版本对应表

北极星服务端北极星控制台 版本的对应关系

Polaris-Server Version Polaris-Console Version
v1.18.x v1.15.0
v1.17.3~v1.17.8 v1.14.4
v1.17.2 v1.14.0
v1.17.0~v1.17.1 v1.13.x
v1.16.x v1.13.x
v1.15.x v1.12.x
v1.14.x v1.11.x
v1.13.x v1.10.x
v1.12.x v1.9.x
v1.11.x v1.8.x
v1.10.0 v1.7.3
v1.9.0 v1.6.1
v1.8.0 v1.6.0
v1.7.0 v1.5.8
v1.6.0 v1.4.0
v1.5.0 v1.3.2
v1.4.0 v1.3.1
v1.3.2 v1.3.1
v1.3.1 v1.3.0
v1.3.0 v1.2.1
v1.2.2 v1.2.1
v1.2.1 v1.2.1
v1.2.0 v1.2.0
v1.0.0 v1.0.0

1.10.x 版本升级至 1.11.x

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

1.11.x 版本升级至 1.12.x

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

1.12.x 版本升级至 1.13.x

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

1.13.x 版本升级至 1.14.x

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

1.14.x 版本升级至 1.15.x

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

1.15.x 版本升级至 1.16.x

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

1.16.x 版本升级至 1.17.2

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

1.17.2 版本升级至 1.17.8

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

1.17.8 版本升级至 1.18.0

polaris-server 升级

polaris-console 升级

  • 覆盖安装 polaris-console

升级注意事项

  • polaris-console 更新之后需要刷新浏览器缓存,避免升级 polaris-console 后浏览器还缓存前端页面文件信息,从而无法体验新的前端交互

1.2 - Release v1.18.0

下载地址

特性说明

Nacos客户端协议全功能版本兼容

在 1.18.0 版本中,社区正式将 apiserver-nacos 插件纳入官方默认插件,并完善了 nacos1.x/nacos2.x 的客户端功能特性兼容。用户无需替换自己的 nacos-client 依赖,只需更换接入地址即可接入北极星的注册发现以及配置管理。

  • nacos1.x
    • 注册发现
      • 实例注册
      • 服务发现
      • 心跳上报
      • 基于 UDP 的服务端主动推送
    • 配置管理
      • 配置发布
      • 配置查询
      • 配置监听
  • nacos2.x
    • 注册发现
      • 实例注册
      • 服务发现
      • 基于 gRPC 长连接的实例信息维护
      • 基于 gRPC 的服务端主动推送
    • 配置管理
      • 配置发布
      • 配置查询
      • 配置监听
apiservers:
  - name: service-nacos
    option:
      listenIP: "0.0.0.0"
      # nacos http 协议监听端口,grpc 端口默认在该基础上 +1000
      listenPort: 8848
      # 设置 nacos 默认命名空间对应 Polaris 命名空间信息
      defaultNamespace: default
      connLimit:
        openConnLimit: false
        maxConnPerHost: 128
        maxConnLimit: 10240

支持 Mesh Sidecar 场景下的 Cluster/Endpoint 按需加载

Sidecar Mesh 场景下,每个 Sidecar 进程都会收到 xDS Server 推送下来的全量服务数据。假设一个 Workload-1 他仅仅调用了 Service-1/Service-2 两个服务,但是大部份的 xDS Server 都会将全量的 Service 推送给 Workload-1 的 Sidecar。这样子带来的后果就是每个 Sidecar 的内存、资源消耗会随着服务量级的增长而增长。

为了解决上述问题。社区在 1.18.0 版本中实现了 Envoy xDS 中的 OCDS 能力。默认只推送全量的 VHDS 到 Sidecar 中,Cluster/Endpoint 资源根据实际请求进行按需加载。

同时我们也优化了服务端关于 xDS 规则生成的内存占用,不再使用 envoy go-control-plane 中的 SnapshotCache 实现,而是选择了 LinearCache,根据每类 xDS 资源的生成特点进行存放在不同的 LinearCache 中,尽可能将公共的 xDS 资源只生成一份,其余的需要按照 mtls、odcds 场景的规则则各自存在对应的 LinearCache 中。

  • 需要搭配 polaris-controller v1.7.0 版本一起使用
  • 由于当前 Envoy 的按需加载能力,当 On-Demand VHDS 和 On-Demand Cluster 同时启用时存在 BUG,因此目前仅实现了 On-Demand Cluster 的能力,待和 Envoy 社区推进解决该 BUG 后用户可享受真正的 Envoy 按需加载能力,社区 issue

支持 Mesh Sidecar 场景下的分布式限流

在 1.18.0 版本中,我们针对 Mesh Sidecar 的场景,支持将 Polaris 的分布式限流通过由 Polaris-Sidecar 组件实现的 RLS 提供给 Envoy 的限流 Filter,使得用户在 Mesh 场景下可以享受 Polaris 的分布式限流能力

配置中心支持灰度发布

为了让用户有更好的配置中心使用体验,社区在 v1.18.0 版本中支持配置灰度能力,当前灰度能力支持用户自定义客户端标签进行灰度控制下发;针对存量老版本客户端仅支持根据客户端IP进行灰度控制台下发。

polaris-go 配置客户端标签

global:
  serverConnector:
    addresses:
      - 127.0.0.1:8091
  client:
    labels:
      ${label_key}: ${label_value}

polaris-java

开发中…

配置中心和 Kubernetes ConfigMap 无缝打通

当前通过 polaris-controller 组件将 Kubernetes 上的 Service 信息同步至北极星中,用户便可以针对 Kubernetes 上的 POD 进行相应的服务治理。但是对于 ConfigMap 这一配置资源的管理却还是只能停留在 Kubernetes;假如北极星能够接管用户的 ConfigMap 管理,用户只需要在北极星控制台上进行配置文件创建、发布即可将配置同步到 ConfigMap 中那么用户还能够享受到配置审计、发布历史、配置回滚等增强功能。因此在 1.18.0 版本中我们支持了北极星和 Kubernetes ConfigMap 资源的数据打通能力,用户只需要部署 polaris-controller 1.7.0 版本即可,相关使用文档参考 K8s 配置同步

版本变化

特性

  • [PR #1174] feat:support push envoy rls filter xds
  • [PR #1175] feat(xds): add OutlierDetection and HealthCheck
  • [PR #1215] 服务端支持流量无损停机
  • [PR #1237] feat: allow empty db password
  • [PR #1253] feat:envoy ratelimit action suppoer all spec label & add hds feature
  • [PR #1271] 配置中心支持灰度发布
  • [PR #1276] refactor:优化xds生成逻辑 & 合并社区 nacosserver 插件
  • [PR #1285] feat:新增配置控制是否允许自动创建服务
  • [PR #1304] feat:xdsv3 support envoy odcds

优化

  • [PR #1170] refactor:Adjust xds rule build
  • [PR #1179] refactor: remove the template code used by map to improve code readability
  • [PR #1232] refactor:statis log add traffic direction info
  • [PR #1235] in order to improve the processing of service discovery QPS when using api-http server
  • [PR #1250] 增强eureka delta api的稳定性
  • [PR #1283] 无效请求不需要上报prometheus

测试覆盖

  • [PR #1309] test:add unit test for service visible feature

BUG 修复

  • [PR #1162] 调整与Eureka实例的状态兼容逻辑
  • [PR #1173] 单机版为用户关联用户组时,会默认勾选所有用户组
  • [PR #1184] 修复通过服务别名拉取时,服务信息为源服务信息问题
  • [PR #1188] 用户组token鉴权bug修复;用户名校验规则修改:允许包含英文句号
  • [PR #1192] 修复batchConfig批量注销实例配置问题
  • [PR #1196] 修复心跳上报写redis异常时未将异常结果返回问题
  • [PR #1197] 修复熔断/探测规则更新绑定服务信息后缓存遗留脏数据
  • [PR #1201] 修复 arm64 环境无法使用 docker image
  • [PR #1212] 修复清理软删除实例时没有同步清理 instance_metadata 以及 health_check 表的数据
  • [PR #1213] 修复xDS 生成 cacheKey 时缺失 gatewayService
  • [PR #1233] fix: Dockerfile 8761 port duplicate
  • [PR #1240] fix typo: firtstUpdate -> firstUpdate
  • [PR #1273] 解决配置中心标签 value 和 key 相同的问题
  • [PR #1281] fix release_history search bug
  • [PR #1287] fix:修复checkLeader任务卡住 & 修复nacos2.x逻辑兼容问题
  • [PR #1291] fix: statis plugin will happen nil pointer dereference on item
  • [PR #1301] 入口流量匹配规则缺失

New Contributors

Full Changelog: https://github.com/polarismesh/polaris/compare/v1.17.8...v1.18.0

参与 PolarisMesh 社区

欢迎大家使用体验、Star、Fork、Issue,也欢迎大家参与 PolarisMesh 开源共建!

仓库地址:https://github.com/polarismesh/polaris

项目文档: https://polarismesh.cn/#/

往期发布:https://github.com/polarismesh/polaris/releases

1.3 - Release v1.17.8

下载地址

特性说明

支持 Mesh Sidecar 场景下的单机限流

在 1.17.3 版本中,我们针对 Mesh Sidecar 的场景,支持将 Polaris 的单机限流规则 Spec 通过 Envoy XDS 的格式进行下发给 Sidecar,使得用户在 Mesh 场景下可以享受 Polaris 的限流能力

配置中心支持配置回滚、撤回发布

为了让用户有更好的配置中心使用体验,社区在 v1.17.3 版本中支持了配置回滚、撤回某个配置版本发布的能力。当前仅支持通过服务端 OpenAPI 进行操作,前端 UI 支持会在下一个版本中对外放出。

关闭服务端自注册的心跳上报

修改服务端配置

bootstrap:
  # Register as Arctic Star Service
  polaris_service:
    # disable_heartbeat disable polaris_server node run heartbeat action to keep lease polaris_service
    disable_heartbeat: true

版本变化

特性

  • [PR 1174] feat:support push envoy rls filter xds
  • [PR 1175] feat(xds): add OutlierDetection and HealthCheck
  • [PR 1187] [Refactor] 配置中心重构+支持配置回滚/撤回发布

优化

  • [PR 1162] 调整与Eureka实例的状态兼容逻辑
  • [PR 1170] refactor:Adjust xds rule build
  • [PR 1179] refactor: remove the template code used by map to improve code readability
  • [PR 1202] refactor:配置文件缓存逻辑重构

BUG 修复

  • [PR 1173] 单机版为用户关联用户组时,会默认勾选所有用户组
  • [PR 1184] 修复通过服务别名拉取时,服务信息为源服务信息问题
  • [PR 1188] 用户组token鉴权bug修复;用户名校验规则修改:允许包含英文句号
  • [PR 1192] 修复batchConfig批量注销实例配置问题
  • [PR 1196] 修复心跳上报写redis异常时未将异常结果返回问题
  • [PR 1208] 修复熔断/探测规则更新绑定服务信息后缓存遗留脏数据
  • [PR 1212] 修复清理软删除实例时没有同步清理 instance_metadata 以及 health_check 表的数据
  • [PR 1213] 修复xDS 生成 cacheKey 时缺失 gatewayService
  • [PR 1201] 修复 arm64 环境无法使用 docker image 问题

New Contributors

Full Changelog: https://github.com/polarismesh/polaris/compare/v1.17.2...v1.17.5

参与 PolarisMesh 社区

欢迎大家使用体验、Star、Fork、Issue,也欢迎大家参与 PolarisMesh 开源共建!

仓库地址:https://github.com/polarismesh/polaris

项目文档: https://polarismesh.cn/#/

往期发布:https://github.com/polarismesh/polaris/releases

1.4 - Release v1.17.2

下载地址

特性说明

配置文件支持加密

配置文件中经常会涉及一些敏感信息,例如帐号密码等参数。这时需对这些敏感信息进行加密,提供信息安全性。因此在 1.17.2 版本中配置中心正式支持配置加密功能,进一步提升配置中心的功能完备性。具体使用文档参考 配置加密

启用该能力的配置文件示例

plugin:
  crypto:
    entries:
      # 配置加密功能中,服务端提供的加密算法插件配置
      - name: AES

支持集群部署不依赖 Redis 能力正式发布

在 1.17.2 中社区正式提供北极星集群部署的去 redis 组件的集群部署方案,方便用户快速搭建北极星,减低使用北极星的成本。

启用该能力的配置文件示例

healthcheck:
  open: true
  service: polaris.checker
  slotNum: 30
  minCheckInterval: 1s
  maxCheckInterval: 30s
  clientReportInterval: 120s
  batch:
    heartbeat:
      open: true
      queueSize: 10240
      waitTime: 32ms
      maxBatchCount: 32
      concurrency: 64
  checkers:
    - name: heartbeatLeader

北极星存储层支持 Postgresql (实验性)

在 1.17.2 中, 社区开发者 @bingxindan 带了存储层基于 postgresql 的支持, 可通过引入 store-postgresql 插件自编译开启存储层使用 postgresql 的特性。

北极星协议层支持 Nacos 2.x 注册发现 (实验性)

在 1.17.2 中, 社区开发者 @chatless 带了协议层对 nacos2.x 的支持, 可通过引入 apiserver-nacos 插件自编译开启协议层支持 nacos2.x 客户端接入的特性。

What’s Changed

Feature

  • [PR #1124] Support configuration encryption function
  • [PR #1126] 解耦AuthServer,将功能拆解到UserOperator及StrategyOperator
  • [PR #1135] Add support for config upsert and publish

Enhancement

  • [PR #1131] Support sending the last heartbeat health time of the instance to the data plane
  • [PR #1137] Optimize store layer error code return and instance query cache
  • [PR #1141] docs(update): 完善OpenAPI swagger 文档
  • [PR #1147] optimize the code style of the configuration center

BugFix

  • [PR #1143] fix:hotfix remove user mobile and email
  • [PR #1144] doc:CircuitBreakerStore文档注释错误
  • [PR #1151] Fix the failure of the metrics function after restarting the container
  • [PR #1155] The server nil panic problem after the health check function is turned off

New Contributors

Full Changelog: https://github.com/polarismesh/polaris/compare/v1.17.1...v1.17.2

参与 PolarisMesh 社区

欢迎大家使用体验、Star、Fork、Issue,也欢迎大家参与 PolarisMesh 开源共建!

仓库地址:https://github.com/polarismesh/polaris

项目文档: https://polarismesh.cn/#/

往期发布:https://github.com/polarismesh/polaris/releases

1.5 - Release v1.17.0

下载地址

特性说明

支持集群部署不依赖 Redis(BETA)

为了减低中小公司在部署北极星时需要维护 redis 以及 mysql 组件所带来的运维工作量,在 1.17.0 中我们提供北极星集群部署的去 redis 组件的集群部署方案,方便用户快速搭建北极星,减低使用北极星的成本。

启用该能力的配置文件示例

healthcheck:
  open: true
  service: polaris.checker
  slotNum: 30
  minCheckInterval: 1s
  maxCheckInterval: 30s
  clientReportInterval: 120s
  batch:
    heartbeat:
      open: true
      queueSize: 10240
      waitTime: 32ms
      maxBatchCount: 32
      concurrency: 64
  checkers:
    - name: heartbeatLeader

XDS 规则下发时支持服务别名

通过北极星的服务别名机制,支持将服务别名一并通过 XDS 的格式进行下发,解决 XDS 跨命名空间资源下发的问题

What’s Changed

Feature

  • PR #1068 eureka注册发现支持命名空间隔离
  • PR #1070 feat:support service alias from xds
  • PR #1082 feat:support heartbeat without redis in cluster

Enhancement

  • PR #1056 refactor admin job execute interval config
  • PR #1063 refactor: maintain rename to admin
  • PR #1065 refactor: service governance rule not bind service instance
  • PR #1066 支持根据实例ID获取实例列表
  • PR #1079 添加windows启动停止脚本
  • PR #1081 GetInstances接口过滤条件为可选
  • PR #1086 修复高并发场景下鉴权CheckPermission方法导致内存溢出问题
  • PR #1099 add CleanDeletedClients admin-job

BugFix

  • PR #1057 修复有子目录的配置文件无法导入问题
  • PR #1060 fix:限流规则disable查询条件失效
  • PR #1076 fix:http 客户端接口鉴权行为保持和gRPC一致
  • PR #1085 Fix prometheus.yml bug
  • PR #1102 fix: remove standalone docker exec not exist shell

Test

  • PR #1062 test: add polaris.checker health check unit test

New Contributors

Full Changelog: https://github.com/polarismesh/polaris/compare/v1.16.4...v1.17.0

参与 PolarisMesh 社区

欢迎大家使用体验、Star、Fork、Issue,也欢迎大家参与 PolarisMesh 开源共建!

仓库地址:https://github.com/polarismesh/polaris

项目文档: https://polarismesh.cn/#/

往期发布:https://github.com/polarismesh/polaris/releases

1.6 - Release v1.16.0

下载地址

特性说明

更完善的服务调用监控

在 polaris 1.16.0 版本前,缺乏服务调用之间的流量指标展示分析,因此服务间调用的流量情况对用户来说就是一个黑盒,同时,用户也无法判断在北极星平台配置的流量治理规则,在服务调用时是否执行,以及执行的结果是否符合预期:

  • 缺少服务间调用请求的响应时耗统计信息。
  • 缺少服务间调用请求的响应码分布情况。
  • 缺少接口级、实例级的服务间调用请求指标。

基于以上几点,在 polaris v1.16.0 版本中,我们针对服务间调用的核心指标重新进行设计,并且优化了相关指标在控制台的展示试图,进一步方便用户观察微服务运行期间服务调用的流量情况:

  • 提供服务间调用响应的耗时统计,支持最大、最小、均值、P95以及P99的查询,支持按照服务、接口、实例进行筛选查看。
  • 提供服务间调用响应码的分布情况,支持按照服务、接口、实例进行筛选查看。
  • 提供服务间调用的主调实例以及被调实例的指标查看。

控制台预览

  • 服务调用兼容概览

  • 服务调用详细

里程碑规划

polaris 下个版本将围绕易用性以及稳定性进行迭代,预计在5月初推出,计划提供下列功能:

集群化部署去redis

为了减低中小公司在部署北极星时需要维护 redis 以及 mysql 组件所带来的运维工作量,社区将提供北极星集群部署的去 redis 组件的集群部署方案,方便用户快速搭建北极星,减低使用北极星的成本。

XDS协议支持下发跨命名空间的服务数据

当前北极星的 XDS 协议不支持下发跨命名空间的服务数据,社区会先通过北极星的服务别名机制,支持将服务别名一并已XDS的格式进行下发,通过服务别名的方式解决XDS跨命名空间资源下发的问题;后续社区也会进一步调研Envoy的按需加载的能力,从而更优雅的解决这一使用问题。

参与 PolarisMesh 社区

欢迎大家使用体验、Star、Fork、Issue,也欢迎大家参与 PolarisMesh 开源共建!

仓库地址:https://github.com/polarismesh/polaris

项目文档: https://polarismesh.cn/#/

往期发布:https://github.com/polarismesh/polaris/releases

1.7 - Release v1.15.0

下载地址

特性说明

更完善的服务注册配置监控

在 polaris 1.15.0 版本前,北极星的可观测性指标较少,用户难以观察北极星服务端运行时的一些指标信息:

  • 缺少服务端针对请求的响应时耗统计信息
  • 缺少服务端响应的错误码分布情况
  • 缺少服务数、实例数的统计,无法感知不同状态实例总数的一个变化情况

基于以上几点,在 polaris v1.15.0 版本中,我们针对服务端的几个核心指标进行上报并展示在控制台,方便用户观察北极星服务端运行时情况:

  • 提供服务端响应的耗时统计,支持最大、最小、均值、P95以及P99的查询,支持按照接口、服务端节点进行筛选查看
  • 提供服务端响应码的分布情况,支持按照接口、服务端节点进行筛选查看
  • 提供服务数统计情况,用户可以查看到服务总数、在线服务数、异常服务数、离线服务数的变化曲线
  • 提供实例数统计情况,用户可以查看到实例总数、在线实例数、异常实例数、隔离实例数的变化曲线
  • 提供配置分组、配置文件、已发布配置文件的数量变化曲线

控制台预览

  • 概览页面

  • 服务和配置统计

  • 服务端请求统计

里程碑规划

polaris 下个版本将继续围绕易用性、可观测性以及稳定性进行迭代,预计在4月初推出,计划提供下列功能:

服务调用监控

  • 支持更详细的业务服务之间的流量调用监控
  • 查看每个服务的调用数、QPS、响应延迟、成功率、错误码
  • 查看服务调用数的情况:成功数、失败数、被限流请求数、被熔断请求数

参与 PolarisMesh 社区

欢迎大家使用体验、Star、Fork、Issue,也欢迎大家参与 PolarisMesh 开源共建!

仓库地址:https://github.com/polarismesh/polaris

项目文档: https://polarismesh.cn/#/

往期发布:https://github.com/polarismesh/polaris/releases

1.8 - Release v1.14.0

下载地址

特性说明

更完善的熔断治理规则

在 polaris 1.14.0 版本前,熔断规则的易用性存在不好的地方。

  • 仅支持节点级熔断。
  • 熔断条件支持不够丰富,仅支持错误率和错误数。
  • 无法根据用户自定义错误码以及响应延迟进行熔断。
  • 主动探测规则无法配置。

基于以上几点,在 polaris v1.14.0 版本中,我们针对熔断规则的 spec 以及配置交互做了优化,解决了上述几个问题,当前用户可以根据自己的场景配置更加灵活的熔断规则:

  • 支持服务级、接口级以及节点级的熔断规则配置。
  • 支持时延、错误码的错误判断条件,用户可自行组合判断条件。
  • 支持配置熔断恢复条件。
  • 支持配置主动探测规则,与业务调用合并判断决定是否关闭熔断状态。

支持查看服务端连接数

  • 社区用户在使用过程中,在升级服务端版本或者变更接入信息等场景中,发现无法观察北极星服务端中的客户端连接数量情况。因此在 polaris 控制台中我们新增北极星服务端自身的一些指标监控:

  • 查看当前链接到北极星服务端的 SDK 实例连接数量

  • 查看当前北极星服务端的服务发现链接数

  • 查看当前北极星服务端的配置获取连接数

控制台预览

  • 服务熔断配置

  • 节点熔断配置

  • 主动探测配置

  • 服务端链接数查看

里程碑规划

polaris 下个版本将继续围绕易用性、可观测性以及稳定性进行迭代,预计在 3 月初推出,计划提供下列功能:

注册配置监控

  • 支持更详细的北极星服务端请求数、响应延迟等指标监控图标。
  • 支持提供服务数、实例数、配置数等指标监控图标。

更易用的路由规则

  • 调整路由规则配置的交互以及规则定义,降低用户对于路由规则配置的理解以及上手成本。

配置导入导出

  • 支持命名空间级别、配置分组级别的配置导入导出能力,提升用户对于配置中心的使用体验。

参与 PolarisMesh 社区

欢迎大家使用体验、Star、Fork、Issue,也欢迎大家参与 PolarisMesh 开源共建!

仓库地址:https://github.com/polarismesh/polaris

项目文档: https://polarismesh.cn/#/

往期发布:https://github.com/polarismesh/polaris/releases

1.9 - Release v1.13.0

下载地址

版本信息

polaris-server

Features

Enhancement

Plugins

Install

BugFix

Test

New Contributors

Full Changelog: 点击链接查看

1.10 - Release v1.12.0

下载地址

版本信息

polaris-server

功能优化

  • [PR #642、#676] 北极星自定义路由功能优化

  • [PR #687] 支持 xdsv3 协议下发规则时输出debug日志

  • [PR #627] 北极星OpenAPI支持Swagger2.0

Bug修复

  • [PR #650] 修复错误码 i18n 可能导致的空指针问题
  • [PR #659] 限流规则匹配标签无法完全删除的问题
  • [PR #661] 修复限流用例失败问题
  • [PR #673] 修复eureka协议中心跳错误的处理
  • [PR #684] 修复自定义路由v1转v2的id漂移问题
  • [PR #693] 修复v2路由规则对于v1路由规则兼容逻辑

安装优化

  • [PR #690] 单机版本支持部署 polaris-limiter 分布式限流server
  • [PR #724] 修复helm部署包中polaris-console.yaml配置不对问题

新贡献者

Full Changelog: 点击链接查看

polaris-console

功能优化

  • [PR #86] 优化服务实例新增/编辑表单
  • [PR #91] Console 使用 Json Web Token 代替用户资源访问凭据,避免浏览器泄露用户Token
  • [PR #99] 支持配置中心配置文件编辑页面全屏编辑
  • [PR #102] beta能力 提供Swagger UI 供加载Polaris Server的OpenAPI 接口, 访问北极星控制台地址(127.0.0.1:8080/apidocs)即可
  • [PR #110] 新建/编辑服务优化标签交互

Bug修复

  • [PR #92] 修复编辑服务实例时不展示服务实例的地理位置信息数据
  • [PR #98] 修复服务可观测性指标聚合查询语句不正确问题

配置变动

polaris-server.yaml

北极星的自注册服务只保留 polaris.checker ,其他自注册服务被移除

# server启动引导配置
bootstrap:
  # 注册为北极星服务
  polaris_service:
    # probe_address: ##DB_ADDR##
    enable_register: true
    isolated: false
    services:
      - name: polaris.checker
        protocols:
          - service-grpc

升级步骤

注意:升级步骤仅针对部署了北极星集群版本

之前已经安装过北极星集群

北极星服务端升级操作
执行 SQL 升级动作
  • 登陆北极星的MySQL存储实例
  • 执行以下 SQL 增量脚本
mysql -u $db_user -p $db_pwd -h $db_host < store/sqldb/scripts/delta/v1_11_0-v1_12_0.sql
北极星控制台升级操作

更新 polaris-console.yaml

logger:
  RotateOutputPath: log/polaris-console.log
  RotationMaxSize: 500
  RotationMaxAge: 30
  RotationMaxBackups: 100
  level: info
webServer:
  mode: "release"
  listenIP: "0.0.0.0"
  listenPort: 8080
  jwt:
    secretKey: "polarismesh@2021"
    expired: 1800
  namingV1URL: "/naming/v1" # 本次 v1.9.0 版本变动
  namingV2URL: "/naming/v2" # 本次 v1.9.0 版本变动
  authURL: "/core/v1"
  configURL: "/config/v1"
  monitorURL: "/api/v1"
  webPath: "web/dist/"
polarisServer:
  address: "{北极星服务端IP}:8090"
monitorServer:
  address: "127.0.0.1:9090"
oaAuthority:
  enableOAAuth: false
hrData:
  enableHrData: false

1.11 - Release v1.11.0

下载地址

版本信息

polaris-server

功能优化

  • [PR #532] 支持配置某些服务在控制台列表进行隐藏
  • [PR #526] 支持配置模版功能(UI交互暂未支持)
  • [PR #552] 新限流后台功能 & UI 交互优化
  • [PR #550] 服务端报错支持 i18n
  • [PR #553] 配置中心代码结构调整

Bug修复

  • [ISSUE #520] 服务注册后,没有做任何操作但是实例的修改时间会发生变化

安装优化

  • [PR #530] 调整 docker 镜像 tag 的发布规则

代码测试

  • [PR #509] 单元测试 & 集成测试添加MySQL存储测试场景
  • [PR #542] 优化整体的集成测试 & 单元测试
  • [PR #548] 单元测试 & 集成测试添加Redis存储测试场景

新贡献者

Full Changelog: https://github.com/polarismesh/polaris/compare/v1.10.0...v1.11.1

polaris-console

功能优化

  • [PR #66] 创建配置文件时,文件的格式自动从文件名中识别
  • [PR #66] 调整创建配置文件页面 Card body 的高度,尽可能充满整个浏览器
  • [PR #86] 优化服务实例新增/编辑表单

Bug修复

  • [PR #95] 修复前端删除熔断规则最后一条时没有触发熔断规则解绑

升级步骤

注意:升级步骤仅针对部署了北极星集群版本

之前已经安装过北极星集群

执行 SQL 升级动作
  • 登陆北极星的MySQL存储实例
  • 执行以下 SQL 增量脚本
mysql -u $db_user -p $db_pwd -h $db_host < store/sqldb/scripts/delta/v1_8_0-v1_11_0.sql

2 - 接口文档

2.1 - Open API

2.2 - 错误码

错误码 描述
200000 执行成功
200001 服务发现数据无变化
200002 数据没有变化, 无需更新
400000 请求错误
400001 请求解析失败
400002 空请求
400003 批量数据超过限制
400004 服务发现资源非法
400100 请求ID非法
400101 用户名非法
400102 用户token非法
400103 参数非法
400104 查询实例参数为空
400105 查询实例, 需要服务或命名空间或主机作为参数
400110 命名空间名称非法
400111 命名空间拥有人非法
400112 命名空间token非法
400120 服务名称非法
400121 服务拥有人非法
400122 服务token非法
400123 服务元数据非法
400124 服务端口非法
400125 服务所属业务非法
400126 服务所属部门非法
400127 服务cmdb非法
400128 服务备注非法
400129 服务别名备注非法
400130 实例ID非法
400131 实例Host非法
400132 实例端口非法
400133 实例别名非法
400134 当前命名空间不运行创建sid类型别名
400135 服务别名拥有者非法
400136 实例协议非法
400137 实例版本非法
400138 实例逻辑集合非法
400139 实例隔离设置非法
400140 服务端未开启健康检查
400141 在已被禁用的实例上进行心跳
400142 心跳超限, 实例仅支持每秒1次心跳
400143 未找到心跳类型
400150 元数据长度过长或包含非法字符
400151 限频ID非法
400152 限频标签非法
400153 限频数量非法
400154 限流名称非法
400160 熔断ID非法
400161 熔断版本非法
400162 熔断名称非法
400163 熔断命名空间ID非法
400164 熔断所属人ID非法
400165 熔断token非法
400166 熔断所属业务非法
400167 熔断所属部门非法
400168 熔断备注非法
400170 服务有已存在的网格
400171 当前资源有已存在的网格
400172 网格参数非法
400180 平台ID非法
400181 平台名称非法
400182 平台域名非法
400183 平台qps非法
400184 平台token非法
400185 平台拥有人非法
400186 平台所属部们非法
400187 平台备注非法
400188 未找到平台
400190 限流ID非法
400191 限流qps非法
400192 限流标识非法
400201 资源已存在
400202 未找到资源
400203 当前命名空间存在服务,请先删除服务,再删除命名空间
400204 当前服务存在实例,请先删除实例,再删除服务
400205 当前服务存在路由规则,请先删除路由规则,再删除服务
400206 当前服务存在限流规则,请先删除限流规则,再删除服务
400207 存在已发布配置
400208 实例请求重复
400209 当前服务存在熔断规则,请先删除熔断规则,再删除服务
400210 当前服务存在服务别名,请先删除服务别名,再删除服务
400211 某些网格资源在当前命名空间已存在
400212 某些熔断在当前命名空间已存在
400213 服务已被某些网格订阅
400214 服务已存在限流配置
400215 用户已存在
400216 用户组已存在
400217 鉴权策略规则已存在
400218 主账户下还存在子账户,请先删除所有子账户,在删除主账户
400301 服务未找到
400302 路由未找到
400303 示例未找到
400304 服务别名未找到
400305 命名空间未找到
400306 未找到和当前服务别名关联的服务
400307 限流规则未找到
400308 熔断规则未找到
400309 主配置未找到
400310 标签配置未找到
400311 未找到标签或服务, 或者关系已存在
400312 用户未找到
400313 拥有人用户未找到
400314 用户组未找到
400315 鉴权策略规则未找到
400401 客户端API未开放
400402 不允许请求当前业务服务
400410 用户所有人非法
400411 用户ID非法
400412 用户密码非法
400420 用户组所有人的属性非法
400421 用户组ID非法
400430 鉴权策略规则拥有人非法
400431 鉴权策略规则名称非法
400432 鉴权策略ID非法
400440 鉴权策略用户主体类型非法
400501 服务别名不允许更新
400502 服务别名不允许创建实例
400503 服务别名不允许创建路由规则
400504 仅允许源服务可以创建别名
400505 服务别名不允许创建限流规则
400506 服务别名不允许绑定规则
400507 不允许不同的命名空间绑定同一规则
400508 不允许修改默认策略
400509 not allow modify main account default strategy
400700 路由规则ID非法
400701 路由规则类型非法,只支持 (RulePolicy,MetadataPolicy)
400702 路由名称非法
400703 路由优先级非法,只支持[0, 10]
400801 配置文件组名非法
400802 配置文件名称非法
400803 配置文件内容过长
400804 非法的配置文件格式,支持的格式有: json,xml,html,properties,text,yaml
400805 配置文件标签非法, 标签应该是成对的, 比如key1,value1,key2,value2, 并且key,value应是非空白字符
400806 监视配置文件格式非法
400807 无法找到配置文件
400808 配置模板名称非法
401000 未经授权
401001 权限不被允许
401002 鉴权token为空
401003 token已被禁用
401004 token不存在
403001 token验证异常
403002 角色操作异常
404001 无法找到主机的cmdb
409000 数据有冲突, 请再次重试
429001 你的实例请求过多
500000 执行异常
500001 存储层异常
500002 cmdb插件异常
500004 解析路由规则失败
500005 解析限频规则失败
500006 解析熔断规则失败
500007 心跳异常
500008 实例异步注册超时

3 - 测试报告

3.1 - 性能测试报告

测试方案

测试工具

使用开源的ghz工具进行压测。测试工具地址: ghz

测试规格

测试组网

客户端直接发送请求到北极星服务端:

  • 服务注册/反注册请求会对MySQL进行增删操作
  • 心跳上报请求会对Redis进行KV修改操作
  • 服务发现请求会对服务端缓存进行操作

准备动作

  • 下载polaris代码
git clone https://github.com/polarismesh/polaris.git
  • 打包proto
chmod 777 polaris/common/api/protoc/bin/* && cd polaris/common/api/v1/ && sh build.sh

测试结果

实例注册

测试数据

规格 TPS 平均RT(ms) 最大RT(ms) P99 RT(ms) 服务端CPU负载 MySQLCPU负载 Redis CPU负载
1C2G 2144 354.75 2450 379.92 64.68 90.54 1.40
2C4G 4563 448.183 2300 492.31 66.09 82.33 1.60
4C8G 13608 187.22 2380 210.53 76.37 86.14 2.39
8C16G 29457 79.01 2030 83.03 58.63 89.03 2.43
8C32G 35912 67.89 2500 75.35 63.02 87.31 2.43

测试命令

  • 执行(ghz命令与配置文件至于polaris/common/api/v1 目录下):
./ghz --config=./register_instance.json -c {并发数, eg 100} -x {持续执行时间, eg 60s}
  • 配置文件 register_instance.json 如下:
{
  // 实际执行时请把所有注释行删除
  // 请求总数
  "total": 1,
  // 并发数
  "concurrency": 1,
  "proto": "./grpcapi.proto",
  "call": "v1.PolarisGRPC.RegisterInstance",
  "data": {
    "id": "polaris-perf-test-1-ins-{{.RequestNumber}}",
    // 服务名称
    "service": "POLARIS-PERF-TEST-1",
    // 命名空间名称
    "namespace": "default",
    // 随机域名
    "host": "fakehost-{{randomString 8 }}.com",
    // 随机端口
    "port": "{{randomInt 1000 50000}}",
    "enable_health_check": true,
    "health_check": {
      "type": 1,
      "heartbeat": {
        "ttl": 3
      }
    },
    "healthy": true,
    "isolate": false,
    "ctime": "{{.TimestampUnix}}",
    "mtime": "{{.TimestampUnix}}"
  },
  // 北极星地址
  "host": "127.0.0.1:8091",
  "insecure": true
}

服务发现

测试数据

规格 TPS 平均RT(ms) 最大RT(ms) P99 RT(ms) 服务端CPU负载 MySQLCPU负载 Redis CPU负载
1C2G 12194 214.75 654.23 248.64 64.68 18.9 6.40
2C4G 27331 17.183 310.46 18.58 92.51 39.441 4.01
4C8G 46118 38.63 472.42 45.47 90.567 25 5.96
8C16G 80277 47.81 719 59.03 88 25.12 3.4
8C32G 116021 298.05 872.81 372.28 93.02 27.312 9

测试命令

  • 执行:
./ghz --config=./discover_instance.json -c {并发数, eg 100} -x {持续执行时间, eg 60s}
  • 配置文件 discover_instance.json 如下:
{
    "total":1,
    "concurrency":1,
    "proto":"./grpcapi.proto",
    "call":"v1.PolarisGRPC.Discover",
    "data":{
        "type": 1,
        "service": {
             // 服务名称
             "name": "PERF-1-TEST-SVCID-{{.WorkerID}}",
             // 命名空间名称
             "namespace":"default"
        }
    },
    // 北极星地址
    "host": "127.0.0.1:8091",
    "insecure":true
}

心跳上报

测试数据

规格 TPS 平均RT(ms) 最大RT(ms) P99 RT(ms) 服务端CPU负载 MySQLCPU负载 Redis CPU负载
1C2G 5094 155.31 564.95 161.84 92.68 36.34 50
2C4G 6419 421.73 342.65 492.31 87.41 40.134 41.241
4C8G 10417 41.47 840.14 50.96 90.124 31.2 23.576
8C16G 32092 70.83 639.47 77.83 89.412 34 30.66
8C32G 78077 219.42 371.58 242.79 90 35 32.39

测试命令

  • 执行:
./ghz --config=./heartbeat_instance.json -c {并发数, eg 100} -x {持续执行时间, eg 60s}
  • 配置文件 heartbeat_instance.json 如下:
{
  // 实际执行时请把所有注释行删除
  // 请求总数
  "total": 1,
  // 并发数
  "concurrency": 1,
  "proto": "./grpcapi.proto",
  "call": "v1.PolarisGRPC.Heartbeat",
  "data": {
    "id": "polaris-perf-test-1-ins-{{.RequestNumber}}",
    // 服务名称
    "service": "POLARIS-PERF-TEST-1",
    // 命名空间名称
    "namespace": "default",
    "healthy": true,
    "isolate": false,
    "mtime": "{{.TimestampUnix}}"
  },
  // 北极星地址
  "host": "127.0.0.1:8091",
  "insecure": true
}

实例反注册

测试数据

规格 TPS 平均RT(ms) 最大RT(ms) P99 RT(ms) 服务端CPU负载 MySQLCPU负载 Redis CPU负载
1C2G 903 573.75 797.03 682.78 45.42 91.54 2.4
2C4G 1485 448.18 621.231 391.07 69.241 82.33 3.8
4C8G 2959 57.59 389.36 88.25 67.51 93.1251 2.39
8C16G 8694 61.70 265.97 123.03 73.41 91.03 2.3
8C32G 14356 61.70 423.51 323.95 63.39 87.31 6.196

测试命令

  • 执行:
./ghz --config=./deregister_instance.json -c {并发数, eg 100} -x {持续执行时间, eg 60s}
  • 配置文件 deregister_instance.json 如下:
{
  // 实际执行时请把所有注释行删除
  // 请求总数
  "total": 1,
  // 并发数
  "concurrency": 1,
  "proto": "./grpcapi.proto",
  "call": "v1.PolarisGRPC.DeregisterInstance",
  "data": {
    "id": "polaris-perf-test-1-ins-{{.RequestNumber}}",
    // 服务名称
    "service": "POLARIS-PERF-TEST-1",
    // 命名空间名称
    "namespace": "default"
  },
   // 北极星地址
  "host": "127.0.0.1:8091",
  "insecure": true
}

结论

在长时间的压力测试下,不同规格的北极星集群均维持正常运行状态,集群可承载的实例容量从1k实例到10w实例,相关依赖组件的系统资源消耗也均在预期内,并未出现相关依赖组件高负载不可用现象。

  • 注册实例的TPS最高可达35912,符合接口预期
  • 服务发现的QPS最高可达116021,符合接口预期
  • 实例心跳的TPS最高可达78077,符合接口预期
  • 注销实例的TPS最高可达14356,符合接口预期

通过压测,不同规格的北极星集群可以稳定支撑服务实例数量均满足预期。

4 - 开发者文档

4.1 - 插件开发

4.1.1 - 开发规范

背景

北极星服务端整体都是一个插件化的设计,当前支持插件化的核心功能模块有

插件名称 插件定义文件
协议层 apiserver.go
存储层 store.go
资源鉴权 auth.go

除了这三个核心模块支持插件化之外,还有一些旁路功能,北极星也进行了插件化的设计

插件名称 插件定义文件
操作审计日志 plugin/history.go
服务实例事件 plugin/discoverevent.go
服务发现统计 plugin/discoverstatis.go
健康检查 plugin/healthchecker.go
接入层限流 plugin/ratelimit.go
配置管理 plugin/cmdb

无论是核心模块还是旁路功能模块,北极星服务端都对其进行了插件化的设计,可以快速的通过编写相关插件来扩展北极星的能力。譬如通过对协议层 apiserver 的扩展,北极星服务端快速支持了 http 以及 grpc 协议的接入,同时实现了 xds 协议以及 eureka 协议的接入。

那么如何根据北极星服务端提供的插件扩展点,来开发自己的插件呢?

如何编写插件

如何编写北极星服务端插件呢?这里我们以开发一个用于将服务实例事件上报到 Loki 的插件。

插件源码

初始化插件项目

  1. 创建插件项目文件夹

    mkdir polaris-server-plugin-${plugin-name}
    
  2. 进入第一步创建的文件夹:polaris-server-plugin-${plugin-name},执行 go mod init 命令

    go mod init ${module name}
    
  3. 进入第一步创建的文件夹:polaris-server-plugin-${plugin-name},创建项目的 README 文档来描述这个插件的使用

  4. 引入北极星服务端依赖

    go get github.com/polarismesh/polaris@${release version}
    

至此,一个北极星服务端插件项目就初始化完成了,接着就要开始进入我们的插件编写阶段。

插件编写

在编写插件前,我们需要先了解下,我们想要实现的插件定义是什么样的,因此这里我们要实现的是一个服务实例事件插件,因此来看下这个插件的定义

// Plugin 通用插件接口
type Plugin interface {
    // Name 插件名称,需要唯一
	Name() string
    // Initialize 初始化插件,插件自行解析 ConfigEntry 转为插件所需要的配置对象
	Initialize(c *ConfigEntry) error
    // Destroy 插件销毁
	Destroy() error
}

// DiscoverChannel is used to receive discover events from the agent
type DiscoverChannel interface {
	Plugin
	// PublishEvent 发布一个服务事件
	//  @param event 服务事件信息
	PublishEvent(event model.DiscoverEvent)
}

因此,我们的自定义服务实例事件插件就需要实现 Plugin 以及 DiscoverChannel 两个 interface,然后将上报 Loki 的动作在 PublishEvent 方法中进行完成。

至此,我们就可以开始编自定义插件,实现将 model.DiscoverEvent 信息写入到 Loki 中

插件注册

完成插件编写后,我们还需要主动将插件信息注册到北极星服务端中,这里北极星服务端利用了 golang 中的 init 机制来实现插件实例的注册。

因此,我们还需要在我们的插件代码中,添加下面的插件注册动作。

package loki

import "github.com/polarismesh/polaris/plugin"

func init() {
	d := &discoverEventLoki{}
	plugin.RegisterPlugin(d.Name(), d)
}

至此,一个自定义的服务实例事件插件的开发流程到这里就全部结束了。

如何使用插件

  1. 下载北极星服务端源码

    git clone https://github.com/polarismesh/polaris.git
    
  2. 进入 polaris 目录, 并切换到对应的版本 TAG

    cd polaris
    git checkout ${release version}
    
  3. 进入 polaris 目录,执行命令引入相关插件

    go get github.com/polaris-contrib/polaris-server-plugin-discoverevent-loki@{version}
    
  4. (可选)进入 polaris 目录,执行依赖整理

    go mod tidy -compat=1.17
    
  5. 编辑 polaris/plugin.go, 在 import 块中添加

    import (
         ...
           _ "github.com/polarismesh/polaris/plugin/discoverevent/loki" # 引入插件并触发插件的自动注册逻辑
    )
    
  6. 执行 build.sh 构建 polaris-server

4.1.2 - CMDB插件开发

背景

在进行服务发现发现时,我们都希望能够做到同机房、同地域的就近路由,以减少网络调用的延迟。而要做到就近路由,就必须知道主调节点和被调节点的地域信息,因此我们可以通过开发北极星服务端的 CMDB 插件,对接至自己的 CMDB 系统,从而填充每个实例的地域信息,以到达实现就近路由的目标。

为了方便快速的将北极星的 CMDB 扩展点对接至用户的 CMDB 系统,我们设计了一套通用的 CMDB OpenAPI,开发者只需要按照该 OpenAPI 实现一个 CMDB 查询服务端,即可将北极星快速对接到自己的 CMDB 系统中去。

协议定义

发起 CMDB 查询请求

METHOD: POST
HEADER: Authorization: 访问 Token // 可选

BODY
{
    "request_id": String,
    "page_no": Number,
    "page_size": Number // 固定,每次 100 拉取
}

CMDB Server 的返回响应

{
    "total": Number, // 总数
    "size": Number, // 当前放回条数
    "code": Number,
    "info": String,
    "data": [
        {
            "ip": "127.0.0.1",
            "type": "host", # 固定
            "region": {
                "name": String
            }
            "zone": {
                "name": String
            }
            "campus": {
                "name": String
            }

        }
    ]
}

服务端启用

修改 polaris-server.yaml 配置

# 插件配置
plugin:
  cmdb:
    name: memory
    option:
      url: "{ CMDB 查询服务端 OpenAPI 地址 }"
      interval: 60s

然后重启北极星服务端即可

4.2 - 指标监控

4.2.1 - 监控指标

服务端

指标

APIServer

指标名称 类型 说明 标签
client_total GAUGE SDK 实例数 polaris_server_instance
sdk_client_total GAUGE SDK 连接数 polaris_server_instance
discovery_conn_total GAUGE 注册发现连接数 polaris_server_instance
config_conn_total GAUGE 配置中心连接数 polaris_server_instance

服务注册

指标名称 类型 说明 标签
service_count GAUGE 服务数 namespace, polaris_server_instance
service_online_count GAUGE 在线服务数(服务下存在健康状态的实例) namespace, polaris_server_instance
service_abnormal_count GAUGE 异常服务数(服务下全为异常状态的实例) namespace, polaris_server_instance
service_offline_count GAUGE 离线服务数(服务下没有任何状态的实例) namespace, polaris_server_instance
instance_count GAUGE 实例数 namespace, service, polaris_server_instance
instance_online_count GAUGE 健康实例数 namespace, service, polaris_server_instance
instance_abnormal_count GAUGE 异常实例数 namespace, service, polaris_server_instance
instance_isolate_count GAUGE 隔离实例数 namespace, service, polaris_server_instance

配置中心

指标名称 类型 说明 标签
config_group_count GAUGE 配置分组数 namespace, polaris_server_instance
config_file_count GAUGE 配置文件数 namespace, group, polaris_server_instance
config_release_file_count GAUGE 已发布配置文件数 namespace, group, polaris_server_instance

响应耗时

指标名称 类型 说明 标签
client_rq_interval_count GAUGE 客户端请求数 api, protocol, err_code, polaris_server_instance
client_rq_timeout GAUGE 客户端请求总时延 api, protocol, err_code, polaris_server_instance
client_rq_timeout_min GAUGE 客户端请求最小时延 api, protocol, err_code, polaris_server_instance
client_rq_timeout_avg GAUGE 客户端请求平均时延 api, protocol, err_code, polaris_server_instance
client_rq_timeout_max GAUGE 客户端请求最大时延 api, protocol, err_code, polaris_server_instance

维度

维度名称 说明
polaris_server_instance PolarisSever节点IP
api 接口名称
protocol 接口层协议
err_code 错误码
namespace 命名空间
service 服务名
group 配置分组

5 - 相关产品对比

5.1 - 注册中心对比

北极星VS其他注册中心

特性 北极星 nacos 1.x nacos 2.x eureka consul
服务发现单机TPS 80277 13604 30680.48 6431 40027.91
服务注册单机TPS 29457 13257 26784.84 4793 4608.57
架构 AP AP/CP AP/CP AP CP
水平扩展 存算分离,支持水平扩展 存算合一,不支持水平扩展 存算合一,不支持水平扩展 存算合一,不支持水平扩展 存算合一,不支持水平扩展
健康检查 主动探测+客户端心跳 主动探测+客户端心跳 主动探测+客户端心跳/连接 客户端心跳 主动探测+客户端心跳
推空保护 支持 支持 支持 支持 不支持
可定制 插件化 插件化 插件化 插件化 不可定制
跨地域容灾 支持 不支持 不支持 不支持 支持

5.2 - 服务网格对比

北极星VS其他服务网格

特性 北极星 sentinel istio
Proxy模式接入 支持 支持 支持
Proxyless框架接入 支持 支持 不支持
多语言SDK 支持Go/Java/C++ 支持Go/Java 不支持
多测试环境路由 支持 不支持 支持
蓝绿发布 支持 不支持 支持
金丝雀发布 支持 不支持 支持
全链路灰度 支持 不支持 支持
A/B测试 支持 不支持 支持
就近访问 支持 不支持 支持
故障熔断 支持 支持 支持
单机限流 支持 支持 支持
分布式限流 支持单次、异步 支持单次 支持单次
限流维度 支持服务、接口、标签、调用关系、来源IP等维度 基于应用、资源、调用关系维度 服务、接口、标签维度
限流算法 直接拒绝、匀速排队 直接拒绝、匀速排队 直接拒绝
Token Server高可用 支持 不支持(需自己实现) 不支持(需自己实现)
可观测性 支持 支持 支持

6 - 常见问题

6.1 - 服务端相关

北极星集群版安装,初始化数据库发生 “Specified key ’name’ was too long; max key length is 767 bytes”

解决方案

  • 启用innodb_large_prefix参数能够取消对于索引中每列长度的限制(但是无法取消对于索引总长度的限制)
  • 启用innodb_large_prefix必须同时指定innodb_file_format=barracuda,innodb_file_per_table=true,并且建表的时候指定表的row_formatdynamic或者compressed(mysql 5.6中row_format默认值为compact)

6.2 - 客户端相关

北极星如何采集业务的服务调用监控信息

  • 北极星业务监控指标是由 Polaris SDK 直接和 Prometheus 服务端进行数据通信
  • Prometheus 感知 Polaris SDK 的方式借助了 Prometheus Service Discovery 能力,当选择 Polaris SDK 通过 Pull 模式上报监控数据时,北极星服务端能够感知到当前所有处于运行状态的 Polaris SDK 实例,然后通过 Prometheus Service Discovery 的方式通知到 Prometheus。

在北极星监控页面看不到服务调用指标

排查点 1: 客户端是否开启了相关监控上报的功能开关

监控功能开关如何开启请参考各语言客户端中的可观测性章节

排查点 2: 确认主调方是否有执行服务调用结果上报

  • 当前北极星的服务调用监控依赖主调方主动上报,因此需要确认业务应用的主调方 (Consumer) 是否引入了北极星相关客户端依赖,比如 Polaris Java、Polaris Go、Spring Cloud Tencent、DubboGo Polaris 等等
  • 如果用户是直接使用 Polaris Java、Polaris Go, 则需要自行调用 ConsumerAPI 中的 UpdateServiceCallResult 方法完成服务调用监控数据上报

排查点 3: 确认 prometheus、pushgateway 组件是否部署以及是否正常运行

  • 单机版安装包已经包括了 prometheus、pushgateway 组件, 开箱即用, 如果是虚拟机部署的, 当虚拟机重启时,需要自行启动每个相关组件进程。
  • 集群版安装时,用户需要自己部署生产可用的 prometheus、pushgateway 集群,请参考集群部署文-监控组件安装

排查点 4: prometheus 指标采集分为了两种: Pull 模式以及 Push 模式,需要根据自己的网络情况合理选择 pull 模式或者 push 模式

123