有奖:语音产品征文挑战赛火热进行中> HOT

操作场景

本文介绍在本地开发 Java 应用,通过 polaris-sdk 的方式接入 TSE 治理中心(北极星网格),并实现服务路由功能。

前提条件

在开发前,请确保您已经下载并安装了 Java 和 Maven。

操作步骤

步骤1:引入北极星依赖

1. 引入 polaris sdk 依赖

修改应用根目录下的pom.xml,为polaris-java添加dependencyManagement
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.tencent.polaris</groupId>
<artifactId>polaris-dependencies</artifactId>
<version>${version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
说明:
polaris-sdk 版本信息请参见:版本信息

2. 引入 polaris starter

<dependencies>
<dependency>
<groupId>com.tencent.polaris</groupId>
<artifactId>polaris-all</artifactId>
</dependency>
</dependencies>

步骤2:添加北极星配置文件 polaris.yaml

1. 在项目的 main/resources 目录下创建 polaris.yml 文件用于初始化 polaris-java SDK。
2. 在 polaris.yml 文件中配置应用名、polaris(北极星)服务端地址等信息。服务端地址查看详见:引擎管理 > 客户端访问地址
global:
serverConnectors:
- id: polaris
protocol: grpc
addresses:
# 地址需要替换成您创建的北极星引擎的客户端访问地址。
- 127.0.0.1:8091
#描述: 监控及日志数据上报相关配置
statReporter:
#描述: 是否启用上报
enable: true
plugin:
prometheus:
type: push
# 描述: 设置 pushgateway 的地址, 仅 type == push 时生效
# 地址需要替换成您创建的北极星引擎的客户端访问地址。
address: 127.0.0.1:9091
#描述:设置metric数据推送到pushgateway的执行周期
#范围:[1s:...],默认值:10s
pushInterval: 10s
更多 polaris.yml 配置信息,请参见default-config.yml

步骤3:应用开发

1. 初始化 routerAPI 实例

import com.tencent.polaris.factory.api.RouterAPIFactory;

public static void main(String[] args) throws Exception {
RouterAPI routerAPI = RouterAPIFactory.createRouterAPI();
}

2. 注册请求体:设置路由策略、实例列表、metedata 等信息。

// ProcessRoutersRequest 执行路由请求结构体
type ProcessRoutersRequest struct {
// 可选参数,设置本次路由请求期望执行的路由插件
// 当前支持的路由插件如下
// - 自定义路由:ruleBasedRouter
// - 就近路由:nearbyBasedRouter
// - 元数据路由:dstMetaRouter
Routers []string
// 可选参数,主调服务信息,你可以通过 ServiceInfo.Metadata 设置本次请求的流量标签信息
SourceService ServiceInfo
// 必选参数,待执行服务路由的实例列表
// 1. InstancesResponse, returned from ConsumerAPI.GetAllInstances.
// 2. DefaultServiceInstances, for user to construct manually.
DstInstances ServiceInstances
// 可选参数,对应路由规则中的方法($method)标签
Method string
// 可选,单次查询超时时间,默认直接获取全局的超时配置
// 用户总最大超时时间为(1+RetryCount) * Timeout
Timeout *time.Duration
// 可选,重试次数,默认直接获取全局的超时配置
RetryCount *int
}
说明:
如果当前 ProcessRoutersRequest 还不支持 AddArgument 方法,同时服务端版本 >= 1.12.0,SourceService.Metadata 对应的 key 名称如下:
路径: $path
方法: $method
请求头: $header.{标签键}
请求参数: $query.{标签键}
请求COOKIE: $cookie.{标签键}
主调IP: $caller_ip
自定义: {标签键}

3. 执行服务路由

您在初始化完 ProcessRoutersRequest 结构体后,只需要调用 RouterAPI.processRouters方法即可完成服务路由。
ProcessRoutersResponse resp = routerAPI.processRouters(registerRequest)