-
Notifications
You must be signed in to change notification settings - Fork 495
就近路由
fredrikliu edited this page Apr 16, 2024
·
8 revisions
生产环境服务为了高可用、容灾等能力往往需要多机房、多城市、多地域部署。
如上图所示,范围从小到大依次为: Campus
< Zone
< Region
< All
其中 Campus
、Zone
、Region
在服务注册发现领域模型里统一定义为元数据,是一种特殊的位置元数据(Location Metadata
)。
以一个实际的部署模型为例:上海机房一、上海机房二、杭州机房一、杭州机房二、北京机房。
- 三层模型
-
Campus
(上海机房一) <Zone
(上海) <Region
(华东)
- 三层模型有时太过于复杂,也可简化成两层模型
-
Zone
(上海机房一) <Region
(上海)
就近路由顾名思义,服务调用时按照 同 Campus
、同 Zone
、同 Region
的优先级从高到低依次选取目标服务实例。核心是减少服务调用因物理距离增加的网络耗时。
本质上,就近路由是一种基于特定一组位置元数据的元数据路由。
如果是通过容器化方式注入java-agent,注入的时候会自动开启路由,则步骤一可以忽略
# 开启北极星路由能力总开关
spring.cloud.polaris.router.enabled=true
# 开启北极星就近路由能力开关
spring.cloud.polaris.router.nearby-router.enabled=true
被调服务需要在北极星的控制台中找到服务列表->理由规则->就近路由,然后开启就近路由
如果是通过腾讯云环境中的容器配置地域,注入的时候会自动获取并填充地域信息,则步骤二可以忽略
# 大区
spring.cloud.tencent.metadata.content.region=huanan
# 城市
spring.cloud.tencent.metadata.content.zone=shenzhen
# 可用区
spring.cloud.tencent.metadata.content.campus=shenzhen-zone-1
北极星的地域模型分为3层级别:campus(可用区)-> zone(城市) -> region(大区)。默认最低会按城市就近匹配,城市匹配不到会匹配大区。如果需要修改成最低按照可用区就近匹配,则可以通过以下配置进行修改:
spring:
cloud:
polaris:
router:
nearby-router:
matchLevel: campus
curl http://127.0.0.1:65001/echo/test
- 您在使用过程中遇到任何问题,请提 Issue 或者加入我们的开发者群告诉我们,我们会在第一时间反馈
- Spring Cloud Tencent 社区期待您的加入,一个 Star、PR 都是对我们最大的支持
- 项目介绍
- 使用指南
- 最佳实践
- 开发文档
- 学习资料