开发者社区 > 云原生 > 正文

nacos 两个客户端注册同一个服务

在nacos 的 1.X版本,两个客户端注册同一个临时服务(服务名、分组名、集群名、ip和端口都一样),会出现后注册的 客户端的服务信息(权重、元数据)覆盖前一个的情况;

在nacos 的 2.X版本,两个客户端注册同一个临时服务(服务名、分组名、集群名、ip和端口都一样),由于nacos的distroKey是基于连接的,所以会出现两条一样的数据:

这会带来一个问题:假如我的业务逻辑里面,要根据返回的服务实例的元数据里面的version字段来适配不同的逻辑,这么一来,图片中的实例无论哪个version都会被适配到。

从nacos 的设计来看,似乎没办法避免这样的事情。

个人觉得这个问题衍生出另外一个问题,就是,虽然开启了鉴权,但是如果一个账号拥有写权限,那么它就可以操作所有的服务数据。

可不可以考虑实现一下账号权限跟服务绑定,防止账号密码泄露导致影响面过大,或者恶意客户端操作所有的服务信息?

看到开源之夏2021 nacos 有鉴权相关的规划,会考虑这个需求么?

原提问者GitHub用户MajorHe1

展开
收起
学习娃 2023-05-22 16:28:20 213 0
1 条回答
写回答
取消 提交回答
  • 鉴权相 关规划只会把对应拓展接口进行一定的修改和暴露, 如果您需要有鉴权相关的需求,可以参照当前nacos提供的简单鉴权demo进行拓展。比如细化鉴权粒度。

    简单鉴权demo本身只会控制在namespace维度。

    回答一下问题1:

    2个客户端注册同一个服务(服务名、分组名、集群名、ip和端口都一样),但是他是两个客户端,实际上应该是两个实例,所以1.X版本覆盖的话其实有一定的不合理性,除非两者内容完全一致,否则不应该替换。

    然而实际上这种情况也不是很容易出现,只有代注册的时候可能会出现。

    原回答者GitHub用户KomachiSion

    2023-05-23 09:50:18
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Nacos架构&原理 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载