-
Notifications
You must be signed in to change notification settings - Fork 496
就近路由
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
的优先级从高到低依次选取目标服务实例。核心是减少服务调用因物理距离增加的网络耗时。
本质上,就近路由是一种基于特定一组位置元数据的元数据路由。
开启就近路由 在examples中的application.yaml中,将路由相关的配置设置为true
spring.cloud.polaris.router.enabled=true
spring.cloud.polaris.router.rule-router.enabled=true
spring.cloud.polaris.router.metadata-router.enabled=true
spring.cloud.polaris.router.nearby-router.enabled=true
在examples中的application.yaml中,添加地域相关的配置(两个provider的地域需不同才能验证就近路由)
spring.cloud.tencent.metadata.content.region=huanan
spring.cloud.tencent.metadata.content.zone=shenzhen
spring.cloud.tencent.metadata.content.campus=shenzhen-zone-1
consumer.serviceRouter.plugin.nearbyBasedRouter.matchLevel=campus
consumer.serviceRouter.plugin.nearbyBasedRouter.maxMatchLevel=all
修改编辑后生成的jar文件:polaris-agent.config,修改为对应的版本
plugins.enable=spring-cloud-2023-plugin
将两个provider打上不同的环境变量,并且在ProviderApplication将环境变量输出出来
-Dspring.cloud.tencent.metadata.content.env=pro1
测试调用
curl http://127.0.0.1:65001/echo/test
- 您在使用过程中遇到任何问题,请提 Issue 或者加入我们的开发者群告诉我们,我们会在第一时间反馈
- Spring Cloud Tencent 社区期待您的加入,一个 Star、PR 都是对我们最大的支持
- 项目介绍
- 使用指南
- 最佳实践
- 开发文档
- 学习资料