| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – 参考手册</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/</link><description>Recent content in 参考手册 on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: 配置项参考指南</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/config/</guid><description> |
| <h2 id="根配置">根配置</h2> |
| <h2 id="客户端配置">客户端配置</h2> |
| <h2 id="服务端配置">服务端配置</h2> |
| <h2 id="注册中心配置">注册中心配置</h2> |
| <h3 id="使用配置-api">使用配置 API</h3> |
| <ul> |
| <li>客户端使用配置 API 设置注册中心</li> |
| </ul> |
| <p>可通过调用config.NewRegistryConfigWithProtocolDefaultPort方法,快速设置用于调试的注册中心,支持zookeeper(127.0.0.1:2181) 和nacos(127.0.0.1:8848)</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span>rc <span style="color:#719e07">:=</span> config.<span style="color:#268bd2">NewRootConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetConsumer</span>(config.<span style="color:#268bd2">NewConsumerConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetRegistryIDs</span>(<span style="color:#2aa198">&#34;zookeeperID&#34;</span>). <span style="color:#586e75">// use defined registryID |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddRegistry</span>(<span style="color:#2aa198">&#34;zookeeperID&#34;</span>, config.<span style="color:#268bd2">NewRegistryConfigWithProtocolDefaultPort</span>(<span style="color:#2aa198">&#34;zookeeper&#34;</span>)). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>() |
| </span></span></code></pre></div><p>全部接口:可通过调用RegistryConfigBuilder提供的丰富接口进行配置。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span>rc <span style="color:#719e07">:=</span> config.<span style="color:#268bd2">NewRootConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetConsumer</span>(config.<span style="color:#268bd2">NewConsumerConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetRegistryIDs</span>(<span style="color:#2aa198">&#34;nacosRegistryID&#34;</span>). <span style="color:#586e75">// use defined registryID |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#268bd2">AddReference</span>(<span style="color:#2aa198">&#34;GreeterClientImpl&#34;</span>,<span style="color:#586e75">/*...*/</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>() |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddRegistry</span>(<span style="color:#2aa198">&#34;nacosRegistryID&#34;</span>, config.<span style="color:#268bd2">NewRegistryConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetProtocol</span>(<span style="color:#2aa198">&#34;nacos&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetAddress</span>(<span style="color:#2aa198">&#34;127.0.0.1:8848&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetGroup</span>(<span style="color:#2aa198">&#34;dubbo-go&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetNamespace</span>(<span style="color:#2aa198">&#34;dubbo&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetUsername</span>(<span style="color:#2aa198">&#34;admin&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetPassword</span>(<span style="color:#2aa198">&#34;admin&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetTimeout</span>(<span style="color:#2aa198">&#34;3s&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>() |
| </span></span></code></pre></div><ul> |
| <li>服务端使用配置 API 设置配置中心</li> |
| </ul> |
| <p>简易接口 config.NewRegistryConfigWithProtocolDefaultPort</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span>rc <span style="color:#719e07">:=</span> config.<span style="color:#268bd2">NewRootConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetProvider</span>(config.<span style="color:#268bd2">NewProviderConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddService</span>(<span style="color:#2aa198">&#34;GreeterProvider&#34;</span>, <span style="color:#586e75">/*...*/</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetRegistryIDs</span>(<span style="color:#2aa198">&#34;registryKey&#34;</span>). <span style="color:#586e75">// use defined registryID |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddRegistry</span>(<span style="color:#2aa198">&#34;registryKey&#34;</span>, config.<span style="color:#268bd2">NewRegistryConfigWithProtocolDefaultPort</span>(<span style="color:#2aa198">&#34;zookeeper&#34;</span>)). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>() |
| </span></span></code></pre></div><p>全部接口:可通过调用RegistryConfigBuilder提供的丰富接口进行配置。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span>rc <span style="color:#719e07">:=</span> config.<span style="color:#268bd2">NewRootConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetProvider</span>(config.<span style="color:#268bd2">NewProviderConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddService</span>(<span style="color:#2aa198">&#34;GreeterProvider&#34;</span>,<span style="color:#586e75">/*...*/</span>) |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetRegistryIDs</span>(<span style="color:#2aa198">&#34;registryKey&#34;</span>). <span style="color:#586e75">// use defined registryID |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddRegistry</span>(<span style="color:#2aa198">&#34;registryKey&#34;</span>, config.<span style="color:#268bd2">NewRegistryConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetProtocol</span>(<span style="color:#2aa198">&#34;nacos&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetAddress</span>(<span style="color:#2aa198">&#34;127.0.0.1:8848&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetGroup</span>(<span style="color:#2aa198">&#34;dubbo-go&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetNamespace</span>(<span style="color:#2aa198">&#34;dubbo&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetUsername</span>(<span style="color:#2aa198">&#34;admin&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetPassword</span>(<span style="color:#2aa198">&#34;admin&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetTimeout</span>(<span style="color:#2aa198">&#34;3s&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>() |
| </span></span></code></pre></div><h3 id="heading"></h3> |
| <h2 id="网络协议">网络协议</h2> |
| <h3 id="配置文件">配置文件</h3> |
| <h3 id="使用配置-api-1">使用配置 API</h3> |
| <ul> |
| <li>客户端使用配置 API 设置网络协议</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span>rc <span style="color:#719e07">:=</span> config.<span style="color:#268bd2">NewRootConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetConsumer</span>(config.<span style="color:#268bd2">NewConsumerConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddReference</span>(<span style="color:#2aa198">&#34;GreeterClientImpl&#34;</span>, config.<span style="color:#268bd2">NewReferenceConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetInterface</span>(<span style="color:#2aa198">&#34;org.apache.dubbo.UserProvider&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetProtocol</span>(<span style="color:#2aa198">&#34;tri&#34;</span>). <span style="color:#586e75">// set reference protcol to triple |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>() |
| </span></span></code></pre></div><ul> |
| <li>服务端使用配置 API 设置网络协议</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span>rc <span style="color:#719e07">:=</span> config.<span style="color:#268bd2">NewRootConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetProvider</span>(config.<span style="color:#268bd2">NewProviderConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddService</span>(<span style="color:#2aa198">&#34;GreeterProvider&#34;</span>, config.<span style="color:#268bd2">NewServiceConfigBuilder</span>(). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetInterface</span>(<span style="color:#2aa198">&#34;org.apache.dubbo.UserProvider&#34;</span>). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">SetProtocolIDs</span>(<span style="color:#2aa198">&#34;tripleProtocolKey&#34;</span>). <span style="color:#586e75">// use protocolID &#39;tripleProtocolKey&#39; |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">AddProtocol</span>(<span style="color:#2aa198">&#34;tripleProtocolKey&#34;</span>, config.<span style="color:#268bd2">NewProtocolConfigBuilder</span>(). <span style="color:#586e75">// define protocol config with protocolID &#39;tripleProtocolKey&#39; |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#268bd2">SetName</span>(<span style="color:#2aa198">&#34;tri&#34;</span>). <span style="color:#586e75">// set service protocol to triple |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#268bd2">Build</span>()). |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">Build</span>() |
| </span></span></code></pre></div><h3 id="heading-1"></h3></description></item><item><title>Overview: 使用 dubbogo-cli 工具</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/use_dubbogo_cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/use_dubbogo_cli/</guid><description> |
| <h2 id="1-安装">1. 安装</h2> |
| <p>dubbogo-cli 是 Apach/dubbo-go 生态的子项目,为开发者提供便利的应用模板创建、工具安装、接口调试等功能,以提高用户的研发效率。</p> |
| <p>执行以下指令安装dubbogo-cli 至 $GOPATH/bin</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>go install github.com/dubbogo/dubbogo-cli@latest |
| </span></span></code></pre></div><h2 id="2-功能概览">2. 功能概览</h2> |
| <p>dubbogo-cli 支持以下能力</p> |
| <ul> |
| <li> |
| <p>应用模板创建</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbogo-cli newApp . |
| </span></span></code></pre></div><p>在当前目录下创建应用模板</p> |
| </li> |
| <li> |
| <p>Demo 创建</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbogo-cli newDemo . |
| </span></span></code></pre></div><p>在当前目录下创建 RPC 示例,包含一个客户端和一个服务端</p> |
| </li> |
| <li> |
| <p>编译、调试工具安装</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbogo-cli install all |
| </span></span></code></pre></div><p>一键安装以下等工具至 $GOPATH/bin</p> |
| <ul> |
| <li> |
| <p>protoc-gen-go-triple</p> |
| <p>用于 triple 协议接口编译</p> |
| </li> |
| <li> |
| <p>imports-formatter</p> |
| <p>用于整理代码 import 块。</p> |
| <p><a href="https://github.com/dubbogo/tools#imports-formatter">import-formatte README</a></p> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <p>查看 dubbo-go 应用注册信息</p> |
| <ul> |
| <li> |
| <p>查看 Zookeeper 上面的注册信息, 获取接口及方法列表</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ dubbogo-cli show --r zookeeper --h 127.0.0.1:2181 |
| </span></span><span style="display:flex;"><span>interface: com.dubbogo.pixiu.UserService |
| </span></span><span style="display:flex;"><span>methods: <span style="color:#719e07">[</span>CreateUser,GetUserByCode,GetUserByName,GetUserByNameAndAge,GetUserTimeout,UpdateUser,UpdateUserByName<span style="color:#719e07">]</span> |
| </span></span></code></pre></div></li> |
| <li> |
| <p>查看 Nacos 上面的注册信息 【功能开发中】</p> |
| </li> |
| <li> |
| <p>查看 Istio 的注册信息【功能开发中】</p> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <p>调试 Dubbo 协议接口</p> |
| </li> |
| <li> |
| <p>调试 Triple 协议接口</p> |
| </li> |
| </ul> |
| <h2 id="3-功能详解">3. 功能详解</h2> |
| <h3 id="31-demo-应用介绍">3.1 Demo 应用介绍</h3> |
| <h4 id="311-demo-创建">3.1.1 Demo 创建</h4> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbogo-cli newDemo . |
| </span></span></code></pre></div><p>在当前目录下创建Demo, 包含客户端和服务端,该 Demo 展示了基于一套接口,完成一次 RPC 调用。</p> |
| <p>该Demo 使用直连模式,无需依赖注册中心,server端暴露服务到本地20000端口,客户端发起调用。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>. |
| </span></span><span style="display:flex;"><span>├── api |
| </span></span><span style="display:flex;"><span>│ ├── samples_api.pb.go |
| </span></span><span style="display:flex;"><span>│ ├── samples_api.proto |
| </span></span><span style="display:flex;"><span>│ └── samples_api_triple.pb.go |
| </span></span><span style="display:flex;"><span>├── go-client |
| </span></span><span style="display:flex;"><span>│ ├── cmd |
| </span></span><span style="display:flex;"><span>│ │ └── client.go |
| </span></span><span style="display:flex;"><span>│ └── conf |
| </span></span><span style="display:flex;"><span>│ └── dubbogo.yaml |
| </span></span><span style="display:flex;"><span>├── go-server |
| </span></span><span style="display:flex;"><span>│ ├── cmd |
| </span></span><span style="display:flex;"><span>│ │ └── server.go |
| </span></span><span style="display:flex;"><span>│ └── conf |
| </span></span><span style="display:flex;"><span>│ └── dubbogo.yaml |
| </span></span><span style="display:flex;"><span>└── go.mod |
| </span></span></code></pre></div><h4 id="312-运行demo">3.1.2 运行Demo</h4> |
| <p>开启服务端</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>$ cd go-server/cmd |
| </span></span><span style="display:flex;"><span>$ go run . |
| </span></span></code></pre></div><p>另一个终端开启客户端</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>$ go mod tidy |
| </span></span><span style="display:flex;"><span>$ cd go-client/cmd |
| </span></span><span style="display:flex;"><span>$ go run . |
| </span></span></code></pre></div><p>可看到打印日志</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>INFO cmd/client.go:49 client response result: name:&#34;Hello laurence&#34; id:&#34;12345&#34; age:21 |
| </span></span></code></pre></div><h3 id="32-应用模板介绍">3.2 应用模板介绍</h3> |
| <h4 id="321-应用模板创建">3.2.1 应用模板创建</h4> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbogo-cli newApp . |
| </span></span></code></pre></div><p>在当前目录下创建应用模板:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>. |
| </span></span><span style="display:flex;"><span>├── Makefile |
| </span></span><span style="display:flex;"><span>├── api |
| </span></span><span style="display:flex;"><span>│ ├── api.pb.go |
| </span></span><span style="display:flex;"><span>│ ├── api.proto |
| </span></span><span style="display:flex;"><span>│ └── api_triple.pb.go |
| </span></span><span style="display:flex;"><span>├── build |
| </span></span><span style="display:flex;"><span>│ └── Dockerfile |
| </span></span><span style="display:flex;"><span>├── chart |
| </span></span><span style="display:flex;"><span>│ ├── app |
| </span></span><span style="display:flex;"><span>│ │ ├── Chart.yaml |
| </span></span><span style="display:flex;"><span>│ │ ├── templates |
| </span></span><span style="display:flex;"><span>│ │ │ ├── _helpers.tpl |
| </span></span><span style="display:flex;"><span>│ │ │ ├── deployment.yaml |
| </span></span><span style="display:flex;"><span>│ │ │ ├── service.yaml |
| </span></span><span style="display:flex;"><span>│ │ │ └── serviceaccount.yaml |
| </span></span><span style="display:flex;"><span>│ │ └── values.yaml |
| </span></span><span style="display:flex;"><span>│ └── nacos_env |
| </span></span><span style="display:flex;"><span>│ ├── Chart.yaml |
| </span></span><span style="display:flex;"><span>│ ├── templates |
| </span></span><span style="display:flex;"><span>│ │ ├── _helpers.tpl |
| </span></span><span style="display:flex;"><span>│ │ ├── deployment.yaml |
| </span></span><span style="display:flex;"><span>│ │ └── service.yaml |
| </span></span><span style="display:flex;"><span>│ └── values.yaml |
| </span></span><span style="display:flex;"><span>├── cmd |
| </span></span><span style="display:flex;"><span>│ └── app.go |
| </span></span><span style="display:flex;"><span>├── conf |
| </span></span><span style="display:flex;"><span>│ └── dubbogo.yaml |
| </span></span><span style="display:flex;"><span>├── go.mod |
| </span></span><span style="display:flex;"><span>├── go.sum |
| </span></span><span style="display:flex;"><span>└── pkg |
| </span></span><span style="display:flex;"><span> └── service |
| </span></span><span style="display:flex;"><span> └── service.go |
| </span></span></code></pre></div><h4 id="322-应用模板介绍">3.2.2 应用模板介绍</h4> |
| <p>生成项目包括几个目录:</p> |
| <ul> |
| <li> |
| <p>api:放置接口文件:proto文件和生成的.pb.go文件</p> |
| </li> |
| <li> |
| <p>build:放置镜像构建相关文件</p> |
| </li> |
| <li> |
| <p>chart:放置发布用 chart 仓库、基础环境chart 仓库:nacos、mesh(开发中)</p> |
| </li> |
| <li> |
| <p>cmd:程序入口</p> |
| </li> |
| <li> |
| <p>conf:框架配置</p> |
| </li> |
| <li> |
| <p>pkg/service:RPC 服务实现</p> |
| </li> |
| <li> |
| <p>Makefile:</p> |
| </li> |
| <li> |
| <ul> |
| <li>镜像、helm部署名:</li> |
| </ul> |
| </li> |
| <li> |
| <ul> |
| <li> |
| <ul> |
| <li>IMAGE = $(your_repo)/$(namespace)/$(image_name) |
| TAG = 1.0.0</li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <p>HELM_INSTALL_NAME = dubbo-go-app,helm 安装名,用于 helm install/uninstall 命令。</p> |
| </li> |
| <li> |
| <ul> |
| <li>提供脚本,例如:</li> |
| </ul> |
| </li> |
| <li> |
| <ul> |
| <li> |
| <ul> |
| <li>make build # 打包镜像并推送</li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <p>make buildx-publish # arm架构本地打包amd64镜像并推送,依赖 docker buildx</p> |
| </li> |
| <li> |
| <p>make deploy # 通过 helm 发布应用</p> |
| </li> |
| <li> |
| <p>make remove # 删除已经发布的 helm 应用</p> |
| </li> |
| <li> |
| <p>make proto-gen # api下生成 pb.go 文件</p> |
| </li> |
| <li></li> |
| </ul> |
| <p>使用应用模板的开发流程</p> |
| <blockquote> |
| <p>依赖环境:make、go、helm、kubectl、docker</p> |
| </blockquote> |
| <ol> |
| <li>通过 dubbogo-cli 生成模板</li> |
| <li>修改api/api.proto</li> |
| <li>make proto-gen</li> |
| <li>开发接口</li> |
| <li>修改 makefile 内 IMAGE 镜像名和 HELM_INSTALL_NAME 发布名</li> |
| <li>打镜像并推送</li> |
| <li>修改chart/app/values 内与部署相关的value配置, 重点关注镜像部分。</li> |
| </ol> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>image: |
| </span></span><span style="display:flex;"><span> repository: $(your_repo)/$(namespace)/$(image_name) |
| </span></span><span style="display:flex;"><span> pullPolicy: Always |
| </span></span><span style="display:flex;"><span> tag: &#34;1.0.0&#34; |
| </span></span></code></pre></div><ol start="8"> |
| <li>make deploy, 使用 helm 发布应用。</li> |
| </ol> |
| <h3 id="33-以-grpc-协议调试-dubbo-go-应用">3.3 以 gRPC 协议调试 dubbo-go 应用</h3> |
| <h4 id="331-简介">3.3.1 简介</h4> |
| <p>grpc_cli 工具是 gRPC 生态用于调试服务的工具,在 server 开启<a href="https://github.com/grpc/grpc/blob/master/doc/server-reflection.md">反射服务</a>的前提下,可以获取到服务的 proto 文件、服务名、方法名、参数列表,以及发起 gRPC 调用。</p> |
| <p>Triple 协议兼容 gRPC 生态,并默认开启 gRPC 反射服务,因此可以直接使用 grpc_cli 调试 triple 服务。</p> |
| <h4 id="332-安装grpc_cli">3.3.2 安装grpc_cli</h4> |
| <blockquote> |
| <p>后续将由 dubbogo-cli 安装,目前需要用户手动安装</p> |
| </blockquote> |
| <p>参考<a href="https://github.com/grpc/grpc/blob/master/doc/command_line_tool.md">grpc_cli 文档</a></p> |
| <h4 id="333-使用-grpc_cli-对-triple-服务进行调试">3.3.3 使用 grpc_cli 对 Triple 服务进行调试</h4> |
| <ol> |
| <li>查看 triple 服务的接口定义</li> |
| </ol> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ grpc_cli ls localhost:20001 -l |
| </span></span><span style="display:flex;"><span>filename: helloworld.proto |
| </span></span><span style="display:flex;"><span>package: org.apache.dubbo.quickstart.samples; |
| </span></span><span style="display:flex;"><span>service UserProvider <span style="color:#719e07">{</span> |
| </span></span><span style="display:flex;"><span> rpc SayHello<span style="color:#719e07">(</span>org.apache.dubbo.quickstart.samples.HelloRequest<span style="color:#719e07">)</span> returns <span style="color:#719e07">(</span>org.apache.dubbo.quickstart.samples.User<span style="color:#719e07">)</span> <span style="color:#719e07">{}</span> |
| </span></span><span style="display:flex;"><span> rpc SayHelloStream<span style="color:#719e07">(</span>stream org.apache.dubbo.quickstart.samples.HelloRequest<span style="color:#719e07">)</span> returns <span style="color:#719e07">(</span>stream org.apache.dubbo.quickstart.samples.User<span style="color:#719e07">)</span> <span style="color:#719e07">{}</span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">}</span> |
| </span></span></code></pre></div><ol start="2"> |
| <li>查看请求参数类型</li> |
| </ol> |
| <p>例如开发者期望测试上述端口的 SayHello 方法,尝试获取HelloRequest的具体定义,需要执行r如下指令,可查看到对应参数的定义。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ grpc_cli <span style="color:#b58900">type</span> localhost:20001 org.apache.dubbo.quickstart.samples.HelloRequest |
| </span></span><span style="display:flex;"><span>message HelloRequest <span style="color:#719e07">{</span> |
| </span></span><span style="display:flex;"><span> string <span style="color:#268bd2">name</span> <span style="color:#719e07">=</span> <span style="color:#2aa198">1</span> <span style="color:#719e07">[</span><span style="color:#268bd2">json_name</span> <span style="color:#719e07">=</span> <span style="color:#2aa198">&#34;name&#34;</span><span style="color:#719e07">]</span>; |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">}</span> |
| </span></span></code></pre></div><ol start="3"> |
| <li>请求接口</li> |
| </ol> |
| <p>已经知道了请求参数的具体类型,可以发起调用来测试对应服务。查看返回值是否符合预期。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ grpc_cli call localhost:20001 SayHello <span style="color:#2aa198">&#34;name: &#39;laurence&#39;&#34;</span> |
| </span></span><span style="display:flex;"><span>connecting to localhost:20001 |
| </span></span><span style="display:flex;"><span>name: <span style="color:#2aa198">&#34;Hello laurence&#34;</span> |
| </span></span><span style="display:flex;"><span>id: <span style="color:#2aa198">&#34;12345&#34;</span> |
| </span></span><span style="display:flex;"><span>age: <span style="color:#2aa198">21</span> |
| </span></span><span style="display:flex;"><span>Received trailing metadata from server: |
| </span></span><span style="display:flex;"><span>accept-encoding : identity,gzip |
| </span></span><span style="display:flex;"><span>adaptive-service.inflight : <span style="color:#2aa198">0</span> |
| </span></span><span style="display:flex;"><span>adaptive-service.remaining : <span style="color:#2aa198">50</span> |
| </span></span><span style="display:flex;"><span>grpc-accept-encoding : identity,deflate,gzip |
| </span></span><span style="display:flex;"><span>Rpc succeeded with OK status |
| </span></span></code></pre></div><h3 id="34-以-dubbo-协议调试dubbo-go-应用">3.4 以 Dubbo 协议调试dubbo-go 应用</h3> |
| <h4 id="341-开启-dubbo-服务端">3.4.1 开启 Dubbo 服务端</h4> |
| <p>示例:user.go:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span><span style="color:#719e07">func</span> (u <span style="color:#719e07">*</span>UserProvider) GetUser(ctx context<span style="color:#719e07">.</span>Context, userStruct <span style="color:#719e07">*</span>CallUserStruct) (<span style="color:#719e07">*</span>User, error) { |
| </span></span><span style="display:flex;"><span> fmt<span style="color:#719e07">.</span>Printf(<span style="color:#2aa198">&#34;=======================</span><span style="color:#cb4b16">\n</span><span style="color:#2aa198">req:%#v</span><span style="color:#cb4b16">\n</span><span style="color:#2aa198">&#34;</span>, userStruct) |
| </span></span><span style="display:flex;"><span> rsp :<span style="color:#719e07">=</span> User{<span style="color:#2aa198">&#34;A002&#34;</span>, <span style="color:#2aa198">&#34;Alex Stocks&#34;</span>, <span style="color:#2aa198">18</span>, userStruct<span style="color:#719e07">.</span>SubInfo} |
| </span></span><span style="display:flex;"><span> fmt<span style="color:#719e07">.</span>Printf(<span style="color:#2aa198">&#34;=======================</span><span style="color:#cb4b16">\n</span><span style="color:#2aa198">rsp:%#v</span><span style="color:#cb4b16">\n</span><span style="color:#2aa198">&#34;</span>, rsp) |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#719e07">&amp;</span>rsp, nil |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><p>服务端开启一个服务,名为GetUser,传入一个CallUserStruct的参数,返回一个User参数 |
| CallUserStruct参数定义:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span>type CallUserStruct struct { |
| </span></span><span style="display:flex;"><span> ID string |
| </span></span><span style="display:flex;"><span> Male <span style="color:#cb4b16">bool</span> |
| </span></span><span style="display:flex;"><span> SubInfo SubInfo <span style="color:#719e07">//</span> 嵌套子结构 |
| </span></span><span style="display:flex;"><span>} |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">func</span> (cs CallUserStruct) JavaClassName() string { |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#2aa198">&#34;com.ikurento.user.CallUserStruct&#34;</span> |
| </span></span><span style="display:flex;"><span>} |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>type SubInfo struct { |
| </span></span><span style="display:flex;"><span> SubID string |
| </span></span><span style="display:flex;"><span> SubMale <span style="color:#cb4b16">bool</span> |
| </span></span><span style="display:flex;"><span> SubAge <span style="color:#cb4b16">int</span> |
| </span></span><span style="display:flex;"><span>} |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">func</span> (s SubInfo) JavaClassName() string { |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#2aa198">&#34;com.ikurento.user.SubInfo&#34;</span> |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><p>User结构定义:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span>type User struct { |
| </span></span><span style="display:flex;"><span> Id string |
| </span></span><span style="display:flex;"><span> Name string |
| </span></span><span style="display:flex;"><span> Age int32 |
| </span></span><span style="display:flex;"><span> SubInfo SubInfo <span style="color:#719e07">//</span> 嵌套上述子结构SubInfo |
| </span></span><span style="display:flex;"><span>} |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">func</span> (u <span style="color:#719e07">*</span>User) JavaClassName() string { |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#2aa198">&#34;com.ikurento.user.User&#34;</span> |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><p>开启服务:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>cd server` |
| </span></span><span style="display:flex;"><span>`source builddev.sh` |
| </span></span><span style="display:flex;"><span>`go run . |
| </span></span></code></pre></div><h4 id="342-定义请求体-适配于序列化协议">3.4.2 定义请求体 (适配于序列化协议)</h4> |
| <p>请求体定义为json文件,约定键值均为string |
| 键对应go语言struct字段名例如&quot;ID&quot;、&ldquo;Name&rdquo; ,值对应&quot;type@val&quot; |
| 其中type支持string int bool time,val使用string 来初始化,如果只填写type则初始化为零值。 约定每个struct必须有JavaClassName字段,务必与server端严格对应</p> |
| <p>见userCall.json:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>{ |
| </span></span><span style="display:flex;"><span> &#34;ID&#34;: &#34;string@A000&#34;, |
| </span></span><span style="display:flex;"><span> &#34;Male&#34;: &#34;bool@true&#34;, |
| </span></span><span style="display:flex;"><span> &#34;SubInfo&#34;: { |
| </span></span><span style="display:flex;"><span> &#34;SubID&#34;: &#34;string@A001&#34;, |
| </span></span><span style="display:flex;"><span> &#34;SubMale&#34;: &#34;bool@false&#34;, |
| </span></span><span style="display:flex;"><span> &#34;SubAge&#34;: &#34;int@18&#34;, |
| </span></span><span style="display:flex;"><span> &#34;JavaClassName&#34;:&#34;string@com.ikurento.user.SubInfo&#34; |
| </span></span><span style="display:flex;"><span> }, |
| </span></span><span style="display:flex;"><span> &#34;JavaClassName&#34;: &#34;string@com.ikurento.user.CallUserStruct&#34; |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><p>userCall.json将参数CallUserStruct的结构及子结构SubInfo都定义了出来,并且给请求参数赋值。</p> |
| <p>user.json 同理,作为返回值不需要赋初始值,但JavaClassName字段一定与server端严格对应</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>{ |
| </span></span><span style="display:flex;"><span> &#34;ID&#34;: &#34;string&#34;, |
| </span></span><span style="display:flex;"><span> &#34;Name&#34;: &#34;string&#34;, |
| </span></span><span style="display:flex;"><span> &#34;Age&#34;: &#34;int&#34;, |
| </span></span><span style="display:flex;"><span> &#34;JavaClassName&#34;: &#34;string@com.ikurento.user.User&#34;, |
| </span></span><span style="display:flex;"><span> &#34;SubInfo&#34;: { |
| </span></span><span style="display:flex;"><span> &#34;SubID&#34;: &#34;string&#34;, |
| </span></span><span style="display:flex;"><span> &#34;SubMale&#34;: &#34;bool&#34;, |
| </span></span><span style="display:flex;"><span> &#34;SubAge&#34;: &#34;int&#34;, |
| </span></span><span style="display:flex;"><span> &#34;JavaClassName&#34;:&#34;string@com.ikurento.user.SubInfo&#34; |
| </span></span><span style="display:flex;"><span> } |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><h4 id="343-调试端口">3.4.3 调试端口</h4> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./dubbo-go-cli -h=localhost -p=20001 -proto=dubbo -i=com.ikurento.user.UserProvider -method=GetUser -sendObj=&#34;./userCall.json&#34; -recvObj=&#34;./user.json&#34; |
| </span></span></code></pre></div><p>打印结果:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>2020/10/26 20:47:45 Created pkg: |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 &amp;{ID:A000 Male:true SubInfo:0xc00006ea20 JavaClassName:com.ikurento.user.CallUserStruct} |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 SubInfo: |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 &amp;{SubID:A001 SubMale:false SubAge:18 JavaClassName:com.ikurento.user.SubInfo} |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 Created pkg: |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 &amp;{ID: Name: Age:0 JavaClassName:com.ikurento.user.User SubInfo:0xc00006ec90} |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 SubInfo: |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 &amp;{SubID: SubMale:false SubAge:0 JavaClassName:com.ikurento.user.SubInfo} |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 connected to localhost:20001! |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 try calling interface:com.ikurento.user.UserProvider.GetUser |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 with protocol:dubbo |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 After 3ms , Got Rsp: |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 &amp;{ID:A002 Name:Alex Stocks Age:18 JavaClassName: SubInfo:0xc0001241b0} |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 SubInfo: |
| </span></span><span style="display:flex;"><span>2020/10/26 20:47:45 &amp;{SubID:A001 SubMale:false SubAge:18 JavaClassName:}``` |
| </span></span></code></pre></div><p>可看到详细的请求体赋值情况,以及返回结果和耗时。支持嵌套结构</p> |
| <p>server端打印结果</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>======================= |
| </span></span><span style="display:flex;"><span>req:&amp;main.CallUserStruct{ID:&#34;A000&#34;, Male:true, SubInfo:main.SubInfo{SubID:&#34;A001&#34;, SubMale:false, SubAge:18}} |
| </span></span><span style="display:flex;"><span>======================= |
| </span></span></code></pre></div><p>可见接收到了来自cli的数据</p></description></item><item><title>Overview: 生态组件</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/ecology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/ecology/</guid><description> |
| <h3 id="dubbo-go--dubbo-go-30">Dubbo-go / Dubbo-go 3.0</h3> |
| <p><a href="https://github.com/apache/dubbo-go">github.com/apache/dubbo-go</a></p> |
| <p>Apache Dubbo Go 语言实现,架起 Java 和 Golang 之间的桥梁。</p> |
| <h3 id="dubbo-go-pixiu">Dubbo-go-pixiu</h3> |
| <p><a href="https://github.com/apache/dubbo-go-pixiu">github.com/apache/dubbo-go-pixiu</a></p> |
| <p>dubbo-go-pixiu 网关支持以 dubbo 协议和 http 协议调用 dubbo/dubbo-go 集群</p> |
| <h3 id="dubbo-getty">Dubbo-getty</h3> |
| <p><a href="https://github.com/apache/dubbo-getty">github.com/apache/dubbo-getty</a></p> |
| <p>dubbo-getty 是一个Go语言异步网络 io 库,支持 tcp/udp/websocket 协议。</p> |
| <h3 id="dubbo-go-hessian2">Dubbo-go-hessian2</h3> |
| <p><a href="https://github.com/apache/dubbo-go-hessian2">github.com/apache/dubbo-go-hessian2</a></p> |
| <p>Dubbo-go-hessian2 是一个Go语言 hessian2 序列化协议库</p> |
| <h3 id="dubbogo-tools">Dubbogo-tools</h3> |
| <p><a href="https://github.com/dubbogo/tools">github.com/dubbogo/tools</a></p> |
| <p>Dubbogo-tools 包括</p> |
| <ul> |
| <li>dubbo-cli 工具</li> |
| <li>imports-formatter Go语言 imports 块格式化工具</li> |
| <li>protoc-gen-triple PB编译插件</li> |
| <li>protoc-gen-dubbo3grpc PB编译插件</li> |
| </ul> |
| <h3 id="triple-go">Triple-go</h3> |
| <p><a href="https://github.com/dubbogo/triple">github.com/dubbogo/triple</a></p> |
| <p>Triple-go 为 Go 语言实现的 Triple (Dubbo3) 网络协议库,基于 HTTP2 协议。</p></description></item><item><title>Overview: 版本号</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/compatible_version/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/compatible_version/</guid><description> |
| <p>Dubbo-go 发布新版本时更新当前依赖的的版本。</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align:center">依赖</th> |
| <th>Dubbo-go</th> |
| <th>Triple</th> |
| <th>protoc-gen-go-triple</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align:center"></td> |
| <td>v3.0.1</td> |
| <td>v1.1.8</td> |
| <td>v1.0.8</td> |
| </tr> |
| <tr> |
| <td style="text-align:center"></td> |
| <td>v3.0.0</td> |
| <td>v1.1.6</td> |
| <td>v1.0.5</td> |
| </tr> |
| <tr> |
| <td style="text-align:center"></td> |
| <td>v3.0.0-rc4-1</td> |
| <td>v1.1.3</td> |
| <td>v1.0.2</td> |
| </tr> |
| <tr> |
| <td style="text-align:center"></td> |
| <td>v3.0.0-rc3</td> |
| <td>v1.0.9</td> |
| <td>v1.0.0</td> |
| </tr> |
| </tbody> |
| </table></description></item><item><title>Overview: 配置基本概念</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/basic_concept/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/refer/basic_concept/</guid><description> |
| <h2 id="1-框架配置">1. 框架配置</h2> |
| <p>Dubbo-go 框架需要依赖配置进行启动。配置中包含了开发者希望使用框架的各种能力。</p> |
| <h3 id="配置格式">配置格式</h3> |
| <p>yaml</p> |
| <h3 id="配置路径">配置路径</h3> |
| <p>默认从 <code>../conf/dubbogo.yaml </code> 加载框架配置</p> |
| <p>可通过指定环境变量:DUBBO_GO_CONFIG_PATH=$(your_config_path)/dubbogo.yaml 来修改配置文件路径。</p> |
| <h3 id="配置根结构">配置根结构</h3> |
| <p>位于 <a href="https://github.com/apache/dubbo-go/blob/e00cf8d6fb2be3cd9c6e42cc3d6efa54e10229d3/config/root_config.go#L50">dubbo.apache.org/dubbo-go/v3/config/root_config.go: RootConfig</a></p> |
| <p>框架加载时,任何形式的配置都会被解析成 RootConfig,在 RootConfig.Init 方法中加载。</p> |
| <h2 id="2-配置api">2. 配置API</h2> |
| <p>开发者可以使用 API 的形式构建配置,从而启动框架。该方法较适合 dubbo-go 作为第三方组件引入的情况。</p> |
| <h2 id="3-配置中心">3. 配置中心</h2> |
| <p>开发者可以将配置放置在配置中心,从而便于配置的管理和修改。</p></description></item></channel></rss> |