Skip to content

SCT Agent 服务路由

liaochuntao edited this page Nov 23, 2022 · 4 revisions

配置 application.properties

在 Polaris Java Agent 安装目录下的 conf 文件夹,找到 application.properties 文件,并按照如下进行配置

# 配置服务名称
spring.application.name=${服务名称信息}
# 开启 polaris java agent 的服务注册发现能力
spring.cloud.discovery.enabled=true
# 设置北极星注册中心地址
spring.cloud.polaris.address=grpc\://127.0.0.1\:8091
# 设置注册的命名空间信息
spring.cloud.polaris.namespace=default
## 启用 Spring Cloud Tencent 的就近路由能力
spring.cloud.polaris.router.enabled=true
# 启用北极星的自定义路由能力
spring.cloud.polaris.router.rule-router.enabled=true

示例 demo

服务提供者

服务调用者

验证

启动 Demo 应用

启动服务提供者

这里我们启动两个服务提供者

# 构建服务提供者
```bash
mvn clean install

启动第一个服务提供者

java -javaagent:/data/provider-agent/polaris-java-agent-${version}/polaris-agent-core-bootstrap.jar -Dspring.cloud.tencent.metadata.content.env=prod -jar provider-2.6.11.jar

启动第二个服务提供者

java -javaagent:/data/provider-agent/polaris-java-agent-${version}/polaris-agent-core-bootstrap.jar -Dspring.cloud.tencent.metadata.content.env=dev -jar provider-2.6.11.jar

启动服务调用者

# 构建服务调用者
mvn clean install

export SCT_TRAFFIC_CONTENT_RAW_TRANSHEADERS=uid

java -javaagent:/data/consumer-agent/polaris-java-agent-${version}/polaris-agent-core-bootstrap.jar -jar consumer-2.6.11.jar

设置服务路由规则

设置服务兜底规则

polaris-java-agent-router-base

设置测试环境路由规则, 我们规定携带了 http header 为 uid: polaris 的请求全部走到带有标签 env: dev 的服务实例

polaris-java-agent-router-dev

验证

在 Spring Cloud 启动日志中,找到如下日志信息, 则表示 Polaris Java Agent 已经成功拦截原本 Spring Cloud 应用的 HttpHandler,并成功注入北极星动态路由能力。

[PolarisAgent] org.springframework.web.servlet.DispatcherServlet enable add ServletFilter to build transfer metadata ability

测试服务调用

curl http://127.0.0.1:18083/echo/hello
Hello, I'm provider, receive msg : hellomy metadata : {"internal-address":"10.21.6.36:51501", "env":"prod","protocol":"http","internal-ip":"10.21.6.36"}

curl -H 'uid: polaris' http://127.0.0.1:18083/echo/hello
Hello, I'm provider, receive msg : hellomy metadata : {"internal-address":"10.21.6.36:51501", "env":"dev","protocol":"http","internal-ip":"10.21.6.36"}
Clone this wiki locally