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

Dubbo/Dubbo-goservice info里的params 为啥要加methods前缀?

请教下,为啥dubbo-go service info里面的params 为啥要加个methods前缀? 9159a2edda8094fd51fcae8cd8e57d38.png
https://github.com/apache/dubbo-go/blob/53843b7495f4f2c66be9d6992b980e0b65662a18/common/metadata_info.go#L224 b3ddfc17828402ee7183873754d534d8.png
这样不就会导致 把原来的dubbo.tag改成了 methods.dubbo.tag么 1ef56dc183b417edf55bddb20d1d9894.png
fa8404f62c744bb397099d639d1e3fe9.png
但是构建出来的url 参数就是错的啊1ef56dc183b417edf55bddb20d1d9894.png
fa8404f62c744bb397099d639d1e3fe9.png

展开
收起
崔问问 2023-11-22 09:25:33 42 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    “Dubbo/Dubbo-goservice info里的params为什么要加methods前缀?”这是一个常见的问题。
    通常来说,params是一个通用的属性,它可以用于表示任意类型的参数。然而,在Dubbo中,params主要用于表示服务API的方法级别的参数。因此,在Dubbo-goservice info中添加methods前缀可以明确指出params是指定给某个特定方法的参数,而不是全局参数。
    另外, Dubbo中还有一种类似的属性——“service params”,它指的是服务级别(而非方法级别)的参数。这样就可以更加清晰地区分出两种不同级别的参数,使得代码更加易于理解。

    2023-11-29 13:46:13
    赞同 展开评论 打赏
  • 在Dubbo-go的service info中,params参数被添加methods前缀的主要目的是为了在Dubbo-go的service info中,params参数被添加methods前缀的主要目的是为了避免与Dubbo的标签冲突。由于Dubbo使用了一些特定的标签来携带元数据,如果params字段没有这个前缀,那么这些带有特定含义的标签(例如dubbo.tag)就有可能会和params字段产生冲突,导致无法正确解析。因此,为了避免这种情况的发生,Dubbo-go在处理params字段时自动添加了methods前缀。

    2023-11-29 12:01:22
    赞同 展开评论 打赏
  • 直观看上去是错误的,但是使用的时候只在methods 构建的时候用了就避免了,你这个是那个分支。看着是有问题,也只能临时想办法规避了1ef56dc183b417edf55bddb20d1d9894.png
    fa8404f62c744bb397099d639d1e3fe9.png这个只在methods里面
    1dbac7953a06615a391e7713bd4f0a60.png
    影响应用及服务发现了吗,你可以提个 issue。看源码也只在应用级服务发现那用了。或者你直接提个 pr 也行。此回答整理自钉钉群:dubbogo社区1

    2023-11-22 09:57:26
    赞同 展开评论 打赏
问答标签:
问答地址:

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

相关电子书

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