zl程序教程

您现在的位置是:首页 >  Java

当前栏目

【SCT】Spring Cloud Tencent Polaris Context

2023-02-18 16:35:40 时间

【引用】

Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案。SCT实现了Spring Cloud 标准微服务 SPI,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 云原生分布式应用。

Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台 Polaris,实现各种分布式微服务场景。

版本信息

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

spring-cloud-tencent:1.6.0-Hoxton.SR12-SNAPSHOT

Spring Cloud:Hoxton.SR12

Spring Framework:5.2.22.RELEASE

【Spring Cloud Tencent Polaris SDK Context】

Polaris SDK Context 工程,提供了 SDKContext 实例获取、Polaris 配置修改,以及 Polaris 服务治理规则能力。

【自动配置】

`spring.factories`机制扫描自动配置类,并自定义注解满足 ` spring.cloud.polaris.enabled =true` 时,自动配置 Polaris SDKContext 实例。

SDKContext 初始化过程:

  • 获取 SCT 的服务配置
  • 调用 Polaris 方法进行初始化
  • 初始化中获取位置信息
  • 最后返回 SDKContext 实例

spring.factories

PolarisContextAutoConfiguration.java

【服务配置】

自定义 Polaris 配置修改接口,提供两个方法:修改与排序。并提供修改服务地址实现类,从配置文件获取 address 地址后,修改为 Polaris 全局服务链接地址。

自定义 Polaris服务配置方法:

  • 获取用户定义的 Polaris 配置实例(即:ConfigurationImpl)
  • 使用 SCT 配置覆盖用户定义的 Polaris 配置 (即:`spring.cloud.client.ip-address`)
  • 从 Spring 容器中获取 PolarisConfigModifier 实现类集合,并进行排序。
  • 循环执行实现类集合的修改接口。

PolarisConfigModifier.java

ModifyAddress.java

PolarisContextProperties.java

【服务治理规则】

依赖 SDKContext 实例,并提供获取两种规则方法:速率限制规则、路由器规则。

核心逻辑:

  • 指定 namespace、service 配合不同的规则类型,得到服务+规则的唯一标识 key
  • 使用该 key 执行 Polaris 的异步获取资源方法(即:syncGetResources)
  • 最后使用该 key 获取资源返回结果

ServiceRuleManager.java

【结尾】

一年已经过去大半,是时候定一个小目标:阅读学习优秀的开源项目源代码。

本文是 Spring Cloud Tencent 第二篇文章,希望今年能完成整个 SCT 源代码的阅读与学习。