Skip to content

就近路由

fredrikliu edited this page Apr 16, 2024 · 8 revisions

就近路由简介

生产环境服务为了高可用、容灾等能力往往需要多机房、多城市、多地域部署。

image

如上图所示,范围从小到大依次为: Campus < Zone < Region < All

其中 CampusZoneRegion 在服务注册发现领域模型里统一定义为元数据,是一种特殊的位置元数据(Location Metadata)。

以一个实际的部署模型为例:上海机房一、上海机房二、杭州机房一、杭州机房二、北京机房。

  1. 三层模型
  • Campus(上海机房一) < Zone(上海) < Region(华东)
  1. 三层模型有时太过于复杂,也可简化成两层模型
  • 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

步骤三 配置匹配规则

就近路由插件默认匹配区间为 [Zone, All],也就是优先匹配 Zone,如果未匹配到,则继续匹配 Region,适用于简单的两层模型。 如果您的部署模型为三层模型(Campus、Zone、Region),则需要增加配置项从 Campus 开始匹配

spring:
  cloud:
    polaris:
      router:
        nearby-router:
          matchLevel: campus

步骤四 配置plugin.enable

修改编辑后生成的jar文件:polaris-agent.config,修改为对应的版本

plugins.enable=spring-cloud-2023-plugin

步骤五 测试调用

curl http://127.0.0.1:65001/echo/test
Clone this wiki locally