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

步骤四 配置地域匹配级别

北极星的地域模型分为3层级别:campus(可用区)-> zone(城市) -> region(大区)。默认最低会按城市就近匹配,城市匹配不到会匹配大区。如果需要修改成最低按照可用区就近匹配,则可以通过以下配置进行修改:

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

步骤五 测试调用

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