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

dubbo 使用 k8s 为注册中心, 消费者@DubboReference providedby

我用的 dubbo3.0.7,参考 https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-kubernetes 这个 demo 创建的spring boot 应用,运行一切正常

由于服务可能比较多, 我不太想 像 demo 里面一个个订阅服务 subscribed-services=dubbo-samples-apiserver-provider, 所以我取消了这个配置, 项目依旧可以运行, 但是我不太明白这个地址的配置能有那些, 取消了这个订阅有什么影响?

dubbo.registry.address=kubernetes://DEFAULT_MASTER_HOST?registry-type=service&duplicate=false&namespace=dubbo-demo&trustCerts=true&subscribed-services=dubbo-samples-apiserver-provider

然后在消费接口这里使用的是 @DubboReference(version = "1.0.0", providedBy = "dubbo-samples-apiserver-provider") 这样来引用接口,这里为什么需要声明应用呢? 而且我尝试过不声明应用启动就会提示 没有服务提供者 导致启动失败,如果一个个加providedby, 就显得有点傻

求大佬解惑!!!

原提问者GitHub用户zhaoqf-cq

展开
收起
大圣东游 2023-05-11 16:51:43 196 0
1 条回答
写回答
取消 提交回答
  • 这里需要一个服务映射的功能。

    因为dubbo本身是没法在消费端侧知道interface对应的appName是什么,在 Kubernetes 体系下,Service 对应的是 appName,没有 appName 就没法做订阅,所以才有了 providedBy 这个参数。

    对于一些其他注册中心下的,比如 nacos 默认会开启元数据中心,元数据中心中会存有一份 interface to appName 的映射,所以不需要配 providedBy 参数。但是 Kubernetes 原生体系下没有这个元数据中心。

    原回答者GitHub用户AlbumenJ

    2023-05-12 10:36:08
    赞同 展开评论 打赏

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

相关产品

  • 容器服务Kubernetes版
  • 相关电子书

    更多
    Dubbo开源现状与2.7规划 立即下载
    Dubbo分布式服务治理实战 立即下载
    《Dubbo 3.0 前瞻》 立即下载