24 lines
1.2 KiB
Markdown
24 lines
1.2 KiB
Markdown
|
|
这个模块的核心作用是“环境标签(tag)透传 + 按标签路由”。
|
|||
|
|
|
|||
|
|
它具体做了什么
|
|||
|
|
|
|||
|
|
1. 启动早期把 rdms.env.tag 映射到 Nacos 实例 metadata (spring.cloud.nacos.discovery.metadata.tag)。
|
|||
|
|
文件: EnvEnvironmentPostProcessor.java
|
|||
|
|
2. Web 请求进来时读取请求头 tag,放到线程上下文。
|
|||
|
|
文件: EnvWebFilter.java
|
|||
|
|
3. Feign 调用时把上下文里的 tag 继续写到下游请求头。
|
|||
|
|
文件: EnvLoadBalancerClient.java
|
|||
|
|
|
|||
|
|
rdms.env.tag 在这个项目里是可选的,不配也能跑。
|
|||
|
|
代码里明确是“有就生效、没有就跳过”:
|
|||
|
|
- 读取 rdms.env.tag,为空就直接返回,不改路由标签
|
|||
|
|
EnvEnvironmentPostProcessor.java
|
|||
|
|
- application-local.yaml 里配了 rdms.env.tag: ${HOSTNAME},而 dev 没配
|
|||
|
|
application-local.yaml
|
|||
|
|
它的目的就是你说的这种场景之一:
|
|||
|
|
多人共用一个 Nacos namespace/集群时,用 tag 做流量隔离(比如“我发起的请求尽量打到我这套实例”)。
|
|||
|
|
再具体点,作用有三层:
|
|||
|
|
1. 给本实例打 Nacos metadata tag。
|
|||
|
|
2. 接口收到 tag 请求头后放到上下文。
|
|||
|
|
3. Feign/LB 优先选同 tag 实例。
|
|||
|
|
所以 dev 不配 tag,通常代表该环境不需要“按人/按版本隔离流量”,走默认路由即可。
|