<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>参考资料 on Apache Dubbo</title><link>https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/refer/</link><description>Recent content in 参考资料 on Apache Dubbo</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/refer/index.xml" rel="self" type="application/rss+xml"/><item><title>生态组件</title><link>https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/refer/ecology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/refer/ecology/</guid><description>&lt;p>相关仓库与示例：&lt;/p>
&lt;ul>
&lt;li>主运行时仓库：&lt;a href="https://github.com/apache/dubbo-go">apache/dubbo-go&lt;/a>&lt;/li>
&lt;li>示例仓库：&lt;a href="https://github.com/apache/dubbo-go-samples">apache/dubbo-go-samples&lt;/a>&lt;/li>
&lt;li>泛化调用示例：&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/generic">dubbo-go-samples/generic&lt;/a>&lt;/li>
&lt;li>Nacos 注册中心示例：&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/registry/nacos">dubbo-go-samples/registry/nacos&lt;/a>&lt;/li>
&lt;li>Triple 示例：&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/rpc/triple">dubbo-go-samples/rpc/triple&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>这个页面用于梳理当前 Dubbo Go 生态里的主要仓库。很多旧文档还会引用 &lt;code>dubbogo/*&lt;/code> 下的历史仓库或工具位置；如果是今天要开发或排查问题，优先以 Apache 名下的仓库作为入口。&lt;/p>
&lt;h2 id="dubbo-go">dubbo-go&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go">github.com/apache/dubbo-go&lt;/a>&lt;/p>
&lt;p>Dubbo Go 主运行时仓库，包含：&lt;/p>
&lt;ul>
&lt;li>核心运行时代码&lt;/li>
&lt;li>内置 protocol、registry、filter、router、load balance&lt;/li>
&lt;li>&lt;code>tools/protoc-gen-go-triple&lt;/code> 等工具&lt;/li>
&lt;li>&lt;code>tools/dubbogo-cli&lt;/code> 等工具&lt;/li>
&lt;/ul>
&lt;h2 id="dubbo-go-samples">dubbo-go-samples&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go-samples">github.com/apache/dubbo-go-samples&lt;/a>&lt;/p>
&lt;p>这是最适合查找可运行示例的仓库。比较常用的目录包括：&lt;/p>
&lt;ul>
&lt;li>&lt;code>helloworld&lt;/code>&lt;/li>
&lt;li>&lt;code>config_yaml&lt;/code>&lt;/li>
&lt;li>&lt;code>generic&lt;/code>&lt;/li>
&lt;li>&lt;code>registry/nacos&lt;/code>、&lt;code>registry/zookeeper&lt;/code>、&lt;code>registry/etcd&lt;/code>、&lt;code>registry/polaris&lt;/code>&lt;/li>
&lt;li>&lt;code>rpc/triple&lt;/code>、&lt;code>rpc/multi-protocols&lt;/code>、&lt;code>rpc/grpc&lt;/code>&lt;/li>
&lt;li>&lt;code>filter/custom&lt;/code>、&lt;code>filter/token&lt;/code>、&lt;code>filter/sentinel&lt;/code>&lt;/li>
&lt;li>&lt;code>router/condition&lt;/code>、&lt;code>router/tag&lt;/code>、&lt;code>router/script&lt;/code>、&lt;code>router/static_config&lt;/code>&lt;/li>
&lt;li>&lt;code>mesh&lt;/code>&lt;/li>
&lt;li>&lt;code>java_interop/*&lt;/code>&lt;/li>
&lt;li>&lt;code>triple_header_trailer&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="protoc-gen-go-triple">protoc-gen-go-triple&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go/tree/main/tools/protoc-gen-go-triple">apache/dubbo-go/tools/protoc-gen-go-triple&lt;/a>&lt;/p>
&lt;p>Dubbo Go Triple 服务的 protobuf 代码生成插件。新的文档应当指向这里，而不是历史上的独立工具仓库。&lt;/p>
&lt;h2 id="dubbogo-cli">dubbogo-cli&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go/tree/main/tools/dubbogo-cli">apache/dubbo-go/tools/dubbogo-cli&lt;/a>&lt;/p>
&lt;p>用于 Dubbo / Dubbo Go 调试与互通场景的命令行工具。现在它已经位于主仓库 &lt;code>apache/dubbo-go&lt;/code> 内部。&lt;/p>
&lt;h2 id="dubbo-go-hessian2">dubbo-go-hessian2&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go-hessian2">github.com/apache/dubbo-go-hessian2&lt;/a>&lt;/p>
&lt;p>Dubbo Go 使用的 Hessian2 序列化库，在 Dubbo 协议和泛化调用互通场景里很常见。&lt;/p>
&lt;h2 id="dubbo-getty">dubbo-getty&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/dubbo-getty">github.com/apache/dubbo-getty&lt;/a>&lt;/p></description></item><item><title>泛化调用</title><link>https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/refer/generic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/refer/generic/</guid><description>&lt;p>相关示例：&lt;/p>
&lt;ul>
&lt;li>泛化调用示例：&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/generic" target="_blank">dubbo-go-samples/generic&lt;/a>&lt;/li>
&lt;li>Triple 示例：&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/rpc/triple" target="_blank">dubbo-go-samples/rpc/triple&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>另见：&lt;a href="https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/sourcecode/generic/">源码指南：泛化调用&lt;/a>。&lt;/p>
&lt;p>泛化调用允许调用方在没有目标接口生成代码 stub 的情况下发起远程调用。它常见于网关、测试、互通、动态调用等场景。&lt;/p>
&lt;h2 id="推荐入口">推荐入口&lt;/h2>
&lt;p>对于当前 Dubbo Go，推荐使用的入口是：&lt;/p>
&lt;ul>
&lt;li>&lt;code>client.NewGenericService(...)&lt;/code>&lt;/li>
&lt;li>&lt;code>filter/generic.GenericService.Invoke(...)&lt;/code>&lt;/li>
&lt;li>&lt;code>filter/generic.GenericService.InvokeWithType(...)&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>这是现在写新泛化调用代码时的标准运行时路径。早期基于 &lt;code>config.ReferenceConfig&lt;/code> 的手工示例属于兼容路径，不应再作为新文档的默认方案。&lt;/p>
&lt;h2 id="triple-场景下的典型用法">Triple 场景下的典型用法&lt;/h2>
&lt;p>如果是直连调用：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>ins, err &lt;span style="color:#719e07">:=&lt;/span> dubbo.&lt;span style="color:#268bd2">NewInstance&lt;/span>(dubbo.&lt;span style="color:#268bd2">WithName&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;generic-client&amp;#34;&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">if&lt;/span> err &lt;span style="color:#719e07">!=&lt;/span> &lt;span style="color:#cb4b16">nil&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#b58900">panic&lt;/span>(err)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cli, err &lt;span style="color:#719e07">:=&lt;/span> ins.&lt;span style="color:#268bd2">NewClient&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">if&lt;/span> err &lt;span style="color:#719e07">!=&lt;/span> &lt;span style="color:#cb4b16">nil&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#b58900">panic&lt;/span>(err)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>genericService, err &lt;span style="color:#719e07">:=&lt;/span> cli.&lt;span style="color:#268bd2">NewGenericService&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.samples.UserProvider&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	client.&lt;span style="color:#268bd2">WithProtocolTriple&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	client.&lt;span style="color:#268bd2">WithSerialization&lt;/span>(constant.Hessian2Serialization),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	client.&lt;span style="color:#268bd2">WithURL&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;tri://127.0.0.1:50052&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	client.&lt;span style="color:#268bd2">WithVersion&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;1.0.0&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	client.&lt;span style="color:#268bd2">WithGroup&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;triple&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">if&lt;/span> err &lt;span style="color:#719e07">!=&lt;/span> &lt;span style="color:#cb4b16">nil&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#b58900">panic&lt;/span>(err)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后就可以按方法名动态调用远端方法：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>resp, err &lt;span style="color:#719e07">:=&lt;/span> genericService.&lt;span style="color:#268bd2">Invoke&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	context.&lt;span style="color:#268bd2">Background&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#2aa198">&amp;#34;GetUser1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	[]&lt;span style="color:#dc322f">string&lt;/span>{&lt;span style="color:#2aa198">&amp;#34;java.lang.String&amp;#34;&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	[]hessian.Object{&lt;span style="color:#2aa198">&amp;#34;A003&amp;#34;&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这是理解泛化调用最直接的方式，也和当前 &lt;code>dubbo-go-samples/generic&lt;/code> 的示例结构一致。&lt;/p></description></item><item><title>使用 Nacos 作为注册中心</title><link>https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/refer/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/refer/nacos/</guid><description>&lt;p>相关示例：&lt;/p>
&lt;ul>
&lt;li>Nacos 注册中心示例：&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/registry/nacos" target="_blank">dubbo-go-samples/registry/nacos&lt;/a>&lt;/li>
&lt;li>应用级服务发现参考：&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/registry/nacos" target="_blank">dubbo-go-samples/registry/nacos&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>另见：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/application-level-service-discovery/">应用级服务发现&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3229--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/tools/dubbogo-cli/">工具：dubbogo-cli&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>这个页面用于说明当前 Dubbo Go 中如何把 Nacos 作为注册中心来使用。它的旧版本主要在讲 CLI 调试流程，但那已经不是现在 Nacos 集成页的核心内容了。&lt;/p>
&lt;h2 id="这个示例展示了什么">这个示例展示了什么&lt;/h2>
&lt;p>当前 &lt;code>registry/nacos&lt;/code> sample 主要展示：&lt;/p>
&lt;ul>
&lt;li>provider 注册到 Nacos&lt;/li>
&lt;li>consumer 通过 Nacos 发现服务&lt;/li>
&lt;li>基于 Triple 的 RPC 调用链路&lt;/li>
&lt;li>Go 应用中基于注册中心的服务发现&lt;/li>
&lt;/ul>
&lt;p>示例目录主要包括：&lt;/p>
&lt;ul>
&lt;li>&lt;code>go-server/cmd/server.go&lt;/code>&lt;/li>
&lt;li>&lt;code>go-client/cmd/client.go&lt;/code>&lt;/li>
&lt;li>&lt;code>proto/greet.proto&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="启动-nacos">启动 Nacos&lt;/h2>
&lt;p>首先启动一个可用的 Nacos 服务，并确保 Dubbo Go 应用能够访问它。sample README 使用的是标准 Nacos 服务和默认控制台。&lt;/p>
&lt;h2 id="启动-provider">启动 Provider&lt;/h2>
&lt;p>在 sample 目录下运行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>go run ./go-server/cmd/server.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>provider 启动后会暴露服务，并把实例注册到 Nacos。&lt;/p>
&lt;p>你也可以用一个 HTTP 请求先验证服务已经起来：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl &lt;span style="color:#cb4b16">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#cb4b16">&lt;/span> --header &lt;span style="color:#2aa198">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span style="color:#cb4b16">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#cb4b16">&lt;/span> --data &lt;span style="color:#2aa198">&amp;#39;{&amp;#34;name&amp;#34;: &amp;#34;Dubbo&amp;#34;}&amp;#39;&lt;/span> &lt;span style="color:#cb4b16">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#cb4b16">&lt;/span> http://localhost:20000/greet.GreetService/Greet
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="启动-consumer">启动 Consumer&lt;/h2>
&lt;p>然后运行：&lt;/p></description></item></channel></rss>