Skip to content

服务内部调用如何环境隔离 #177

Open
@FengChueng

Description

@FengChueng

作者你好,感谢你的开源作品。我在使用该开源产品时,遇到以下疑惑,麻烦解答。

服务实例:
A(元数据:env=canary)
B-1(元数据:env=canary)
B-2(元数据:env=prod)
C-1(元数据:env=canary)
C-2(元数据:env=prod)
调用链路:A ->B -> C

例如有一个基于spring schedule的定时服务A,通过FeignClient调用时,即使指定n-d-env=canary,也没有按路由策略调用B-1(元数据:env=canary),而是使用轮询策略调用B-1,B-2。但是当调用至B-1时,则只会调用C-1。当调用B-2时,只会调用C-2。
即可能调用链路为:
A -> B1 -> C1
A -> B2 -> C2

比较疑惑为什么A不会根据元数据 env=canary来调用B1呢?而是使用沦陷调用B服务

网上的方案可以在服务A中通过 DiscoveryClient,获取服务列表,然后根据A的元数据过滤,再使用RestTemplate/Okhttp发起对B的请求。
请问还有其他更优雅的方式实现吗?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions