| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – Registry</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/</link><description>Recent content in Registry on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs3-V2: Understanding the Registry</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/desc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/desc/</guid><description/></item><item><title>Docs3-V2: Application-Level Service Discovery</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/service-discovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/service-discovery/</guid><description> |
| <p>Reference article <a href="https://baijiahao.baidu.com/s?id=1669266413887039723&amp;wfr=spider&amp;for=pc"><strong>&ldquo;Dubbo takes an important step towards cloud native application-level service discovery analysis&rdquo;</strong></a></p> |
| <p>Reference repository: <a href="https://github.com/apache/dubbo-go-samples/tree/master/registry/servicediscovery">dubbo-go-samples/registry/serivcediscovery</a></p> |
| <h2 id="configuration">Configuration</h2> |
| <ul> |
| <li>Consumer side</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">demoZK</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry-type</span>: service <span style="color:#586e75"># Specify the registry as application-level service discovery, if not filled, it defaults to interface level</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">metadata-report</span>: <span style="color:#586e75"># Define metadata center</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos <span style="color:#586e75"># The metadata center can choose nacos/zk</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">consumer</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">references</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterClientImpl</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: com.apache.dubbo.sample.basic.IGreeter |
| </span></span></code></pre></div><ul> |
| <li>Provider side</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">demoZK</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry-type</span>: service <span style="color:#586e75"># Specify the registry as application-level service discovery, if not filled, it defaults to interface level</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">metadata-report</span>: <span style="color:#586e75"># Define metadata center</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos <span style="color:#586e75"># The metadata center can choose nacos/zk</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">triple</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterProvider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: com.apache.dubbo.sample.basic.IGreeter |
| </span></span></code></pre></div><p>Compared with the conventional configuration, after defining registry-type: service and defining the metadata center, application-level service registration/service discovery will be used.</p></description></item><item><title>Docs3-V2: Registry Configuration</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/registry/</guid><description> |
| <p>Refer to samples <a href="https://github.com/apache/dubbo-go-samples/tree/master/registry">dubbo-go-samples/registry</a></p> |
| <h2 id="registry-registration-center-configuration">Registry registration center configuration</h2> |
| <ul> |
| <li><strong>Nacos Registration Center</strong></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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">application</span>: <span style="color:#586e75"># Application information, after the service is started, the relevant information will be registered in the registration center, which can be identified by the client from the url</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: myApp <span style="color:#586e75"># application=myApp; name=myApp</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">module</span>: opensource <span style="color:#586e75"># module=opensource</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">organization</span>: dubbo <span style="color:#586e75"># organization=dubbo</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">owner</span>: laurence <span style="color:#586e75"># owner=laurence</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">version</span>: myversion <span style="color:#586e75"># app.version=myversion</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">environment</span>: pro <span style="color:#586e75"># environment=pro</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">nacosWithCustomGroup</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos <span style="color:#586e75"># The registration center chooses nacos</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> <span style="color:#586e75"># nacos ip</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">group</span>: myGroup <span style="color:#586e75"># nacos group, default DEFAULT_GROUP</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">namespace</span>: 9fb00abb-278d-42fc-96bf-e0151601e4a1 <span style="color:#586e75"># nacos namespaceID, should be created before. Default public</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">username</span>: abc |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">password</span>: abc |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: dubbo |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">UserProviderWithCustomGroupAndVersion: # Interface triplet</span>: interface name, version number, group. client and server need to be consistent. |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: org.apache.dubbo.UserProvider.Test <span style="color:#586e75"># interface name is required</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">version</span>: myInterfaceVersion <span style="color:#586e75"># Default is empty</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">group</span>: myInterfaceGroup <span style="color:#586e75"># Default is empty</span> |
| </span></span></code></pre></div><p>The group, namespace, username, and password configured in the registration center of dubbogo correspond to nacos-related concepts.</p> |
| <ul> |
| <li><strong>Zookeeper Registry</strong></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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#586e75"># application: Consistent with nacos, no more details</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">demoZK</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: zookeeper <span style="color:#586e75"># The registration center chooses nacos</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">2181</span> <span style="color:#586e75"># zookeeper ip</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">group</span>: myGroup <span style="color:#586e75"># nacos group, default dubbo</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">triple</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">UserProviderWithCustomGroupAndVersion: # Interface triplet</span>: interface name, version number, group. client and server need to be consistent. |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: com.apache.dubbo.sample.basic.IGreeter <span style="color:#586e75"># interface name is required</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">version</span>: myInterfaceVersion <span style="color:#586e75"># Default is empty</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">group</span>: myInterfaceGroup <span style="color:#586e75"># Default is empty</span> |
| </span></span></code></pre></div><p>When zookeeper is registered, the provider side registers the interface information in <code>/$(group)/$(interface)/providers</code> node, taking the above configuration as an example, the registered zk path is <code>/myGroup/com.apache.dubbo.sample. basic.IGreeter/providers/</code></p> |
| <p>The consumer side is registered in /$(group)/$(interface)/consumers for statistics.</p> |
| <ul> |
| <li><strong>ETCD Registration Center</strong></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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">etcd</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: etcdv3 |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">timeout</span>: 3s |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">2379</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: dubbo |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">UserProvider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: org.apache.dubbo.UserProvider |
| </span></span></code></pre></div><ul> |
| <li><strong>Application-level service registration discovery</strong></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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">demoZK</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: zookeeper <span style="color:#586e75"># nacos/zookeeper</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">2181</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry-type</span>: service <span style="color:#586e75"># Use application-level service discovery</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">metadata-report</span>: <span style="color:#586e75"># configure metadata center</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: zookeeper |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">2181</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">triple</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterProvider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: com.apache.dubbo.sample.basic.IGreeter |
| </span></span></code></pre></div></description></item><item><title>Docs3-V2: Use Nacos as a registry</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/nacos/</guid><description> |
| <h2 id="1-preparations">1. Preparations</h2> |
| <ul> |
| <li>dubbo-go cli tools and dependent tools have been installed</li> |
| <li>Create a new demo application</li> |
| </ul> |
| <h2 id="2-use-grpc_cli-tool-to-debug-dubbo-service">2. Use grpc_cli tool to debug Dubbo service</h2> |
| <h3 id="21-start-the-server">2.1 Start the server</h3> |
| <p>Example: 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-go" data-lang="go"><span style="display:flex;"><span><span style="color:#268bd2">func</span> (u <span style="color:#719e07">*</span>UserProvider) <span style="color:#268bd2">GetUser</span>(ctx context.Context, userStruct <span style="color:#719e07">*</span>CallUserStruct) (<span style="color:#719e07">*</span>User, <span style="color:#dc322f">error</span>) { |
| </span></span><span style="display:flex;"><span>fmt.<span style="color:#268bd2">Printf</span>(<span style="color:#2aa198">&#34;=========================\nreq:%#v\n&#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.SubInfo} |
| </span></span><span style="display:flex;"><span>fmt.<span style="color:#268bd2">Printf</span>(<span style="color:#2aa198">&#34;========================\nrsp:%#v\n&#34;</span>, rsp) |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">return</span> <span style="color:#719e07">&amp;</span>rsp, <span style="color:#cb4b16">nil</span> |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><p>The server opens a service named GetUser, passes in a CallUserStruct parameter, and returns a User parameter<br> |
| CallUserStruct parameter definition:</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><span style="color:#268bd2">type</span> CallUserStruct <span style="color:#268bd2">struct</span> { |
| </span></span><span style="display:flex;"><span>ID <span style="color:#dc322f">string</span> |
| </span></span><span style="display:flex;"><span>Male <span style="color:#dc322f">bool</span> |
| </span></span><span style="display:flex;"><span>SubInfo SubInfo <span style="color:#586e75">// nested substructure |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span>} |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">func</span> (cs CallUserStruct) <span style="color:#268bd2">JavaClassName</span>() <span style="color:#dc322f">string</span> { |
| </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><span style="color:#268bd2">type</span> SubInfo <span style="color:#268bd2">struct</span> { |
| </span></span><span style="display:flex;"><span>SubID <span style="color:#dc322f">string</span> |
| </span></span><span style="display:flex;"><span>SubMale <span style="color:#dc322f">bool</span> |
| </span></span><span style="display:flex;"><span>SubAge <span style="color:#dc322f">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:#268bd2">func</span> (s SubInfo) <span style="color:#268bd2">JavaClassName</span>() <span style="color:#dc322f">string</span> { |
| </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 structure definition:</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><span style="color:#268bd2">type</span> User <span style="color:#268bd2">struct</span> { |
| </span></span><span style="display:flex;"><span>Id <span style="color:#dc322f">string</span> |
| </span></span><span style="display:flex;"><span>name <span style="color:#dc322f">string</span> |
| </span></span><span style="display:flex;"><span>Age <span style="color:#dc322f">int32</span> |
| </span></span><span style="display:flex;"><span>SubInfo SubInfo <span style="color:#586e75">// Nest the above substructure SubInfo |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span>} |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">func</span> (u <span style="color:#719e07">*</span>User) <span style="color:#268bd2">JavaClassName</span>() <span style="color:#dc322f">string</span> { |
| </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>Start the service:</p> |
| <p><code>cd server</code><br> |
| <code>source builddev.sh</code><br> |
| <code>go run.</code></p> |
| <h3 id="22-define-the-request-body-unpacking-protocol">2.2 Define the request body (unpacking protocol)</h3> |
| <p>The request body is defined as a json file, and the agreed key value is string<br> |
| The key corresponds to the field name of the go language struct, such as &ldquo;ID&rdquo; and &ldquo;Name&rdquo;, and the value corresponds to &ldquo;type@val&rdquo;<br> |
| Among them, type supports string int bool time, and val is initialized with string. If only type is filled in, it will be initialized to a zero value. |
| It is agreed that each struct must have a JavaClassName field, which must strictly correspond to the server side</p> |
| <p>See 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-json" data-lang="json"><span style="display:flex;"><span>{ |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;ID&#34;</span>: <span style="color:#2aa198">&#34;string@A000&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;Male&#34;</span>: <span style="color:#2aa198">&#34;bool@true&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;SubInfo&#34;</span>: { |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;SubID&#34;</span>: <span style="color:#2aa198">&#34;string@A001&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;SubMale&#34;</span>: <span style="color:#2aa198">&#34;bool@false&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;SubAge&#34;</span>: <span style="color:#2aa198">&#34;int@18&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;JavaClassName&#34;</span>: <span style="color:#2aa198">&#34;string@com.ikurento.user.SubInfo&#34;</span> |
| </span></span><span style="display:flex;"><span> }, |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;JavaClassName&#34;</span>: <span style="color:#2aa198">&#34;string@com.ikurento.user.CallUserStruct&#34;</span> |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><p>userCall.json defines the structure of the parameter CallUserStruct and the substructure SubInfo, and assigns values to the request parameters.</p> |
| <p>Similarly, user.json does not need to assign an initial value as the return value, but the JavaClassName field must strictly correspond to the server side</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>{ |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;ID&#34;</span>: <span style="color:#2aa198">&#34;string&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;Name&#34;</span>: <span style="color:#2aa198">&#34;string&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;Age&#34;</span>: <span style="color:#2aa198">&#34;int&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;JavaClassName&#34;</span>: <span style="color:#2aa198">&#34;string@com.ikurento.user.User&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;SubInfo&#34;</span>: { |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;SubID&#34;</span>: <span style="color:#2aa198">&#34;string&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;SubMale&#34;</span>: <span style="color:#2aa198">&#34;bool&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;SubAge&#34;</span>: <span style="color:#2aa198">&#34;int&#34;</span>, |
| </span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;JavaClassName&#34;</span>: <span style="color:#2aa198">&#34;string@com.ikurento.user.SubInfo&#34;</span> |
| </span></span><span style="display:flex;"><span> } |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><h3 id="23-executing-the-request">2.3 Executing the request</h3> |
| <p><code>dubbogo-cli call --h=localhost --p 20001 --proto=dubbo --i=com.ikurento.user.UserProvider --method=GetUser --sendObj=&quot;./userCall.json&quot; --recvObj= &quot;./user.json&quot;</code></p> |
| <p>The client prints the result:</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>You can see the detailed request body assignment, as well as the returned result and time-consuming. Supports nested structures</p> |
| <p>Print the result on the server side</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>It can be seen that the data from the cli has been received</p></description></item><item><title>Docs3-V2: 使用 Nacos 作为注册中心</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/nacos-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/nacos-2/</guid><description> |
| <h2 id="1-准备工作">1. 准备工作</h2> |
| <ul> |
| <li>dubbo-go cli 工具和依赖工具已安装</li> |
| <li>创建一个新的 demo 应用</li> |
| <li>启动一个 Nacos 实例,暴露 8848 端口</li> |
| </ul> |
| <h2 id="2-配置注册中心">2. 配置注册中心</h2> |
| <hr> |
| <h2 id="weight-10">title: Use Nacos as a registry |
| type: docs |
| weight: 10</h2> |
| <h2 id="1-preparations">1. Preparations</h2> |
| <ul> |
| <li>dubbo-go cli tools and dependent tools have been installed</li> |
| <li>Create a new demo application</li> |
| <li>Start a Nacos instance and expose port 8848</li> |
| </ul> |
| <h2 id="2-configure-the-registration-center">2. Configure the registration center</h2> |
| <p>Modify the server configuration go-server/conf/dubbogo.yaml</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">nacos</span>: <span style="color:#586e75"># configure Nacos registration center</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> <span style="color:#586e75"># Specify Nacos address</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">triple</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterProvider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: <span style="color:#2aa198">&#34;&#34;</span> <span style="color:#586e75"># read from pb</span> |
| </span></span></code></pre></div><p>Modify client configuration go-client/conf/dubbogo.yaml</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">nacos</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">consumer</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">references</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterClientImpl</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: <span style="color:#2aa198">&#34;&#34;</span> <span style="color:#586e75"># read from pb</span> |
| </span></span></code></pre></div><h2 id="3-use-nacos-for-service-discovery">3. Use Nacos for service discovery</h2> |
| <ul> |
| <li> |
| <p>Start go-server/cmd and check the log</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><span style="color:#719e07">[</span>Nacos Registry<span style="color:#719e07">]</span> Registry instance with param ... |
| </span></span></code></pre></div><p>The log contains Nacos registration information, and the current service interface is registered in Nacos.</p> |
| <p>You can log in to the console http://localhost:8848/nacos to view the registered services</p> |
| </li> |
| <li> |
| <p>Start go-client/cmd to view logs</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> [Nacos Registry] Update begin, service event: ServiceEvent{Action{add}, Path{tri://xxx.xxx.xxx.xxx:20000/api.Greeter ... |
| </span></span></code></pre></div><p>The log contains the subscription event information of the Nacos registration component, and the server IP and port number are obtained, indicating that the call is successful.</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>client response result: name: &#34;Hello laurence&#34; id: &#34;12345&#34; age:21 |
| </span></span></code></pre></div></li> |
| </ul> |
| <h2 id="4-more-supported-registries">4. More supported registries</h2> |
| <p>Reference <a href="https://github.com/apache/dubbo-go-samples/tree/master/registry">dubbo-go-samples/registry</a> |
| 修改服务端配置 go-server/conf/dubbogo.yaml</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">nacos</span>: <span style="color:#586e75"># 配置 Nacos 注册中心</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> <span style="color:#586e75"># 指定 Nacos 地址</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">triple</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterProvider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: <span style="color:#2aa198">&#34;&#34;</span> <span style="color:#586e75"># read from pb</span> |
| </span></span></code></pre></div><p>修改客户端配置 go-client/conf/dubbogo.yaml</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">nacos</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">consumer</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">references</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterClientImpl</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: <span style="color:#2aa198">&#34;&#34;</span> <span style="color:#586e75"># read from pb</span> |
| </span></span></code></pre></div><h2 id="3-使用-nacos-进行服务发现">3. 使用 Nacos 进行服务发现</h2> |
| <ul> |
| <li> |
| <p>启动go-server/cmd,查看日志</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><span style="color:#719e07">[</span>Nacos Registry<span style="color:#719e07">]</span> Registry instance with param ... |
| </span></span></code></pre></div><p>日志中包含 Nacos 注册信息,将当前服务接口注册在 Nacos。</p> |
| <p>可登陆控制台 http://localhost:8848/nacos 查看注册的服务</p> |
| </li> |
| <li> |
| <p>启动 go-client/cmd 查看日志</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> [Nacos Registry] Update begin, service event: ServiceEvent{Action{add}, Path{tri://xxx.xxx.xxx.xxx:20000/api.Greeter ... |
| </span></span></code></pre></div><p>日志中包含 Nacos 注册组件的订阅事件信息,获取到服务端 IP 和端口号,显示调用成功。</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>client response result: name:&#34;Hello laurence&#34; id:&#34;12345&#34; age:21 |
| </span></span></code></pre></div></li> |
| </ul> |
| <h2 id="4-更多支持的注册中心">4. 更多支持的注册中心</h2> |
| <p>参考 <a href="https://github.com/apache/dubbo-go-samples/tree/master/registry">dubbo-go-samples/registry</a></p></description></item><item><title>Docs3-V2: Using Zookeeper as a Registry</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/zookeeper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/zookeeper/</guid><description> |
| <p>TBD</p></description></item><item><title>Docs3-V2: Using Polaris as a Registry</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/polaris/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/polaris/</guid><description> |
| <p>TBD</p></description></item><item><title>Docs3-V2: Multiple Registries</title><link>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/multi_registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs3-v2/golang-sdk/tutorial/develop/registry/multi_registry/</guid><description> |
| <p>A registration center for multiple interface dimensions that can be configured by a Dubbo-go application.</p> |
| <h2 id="1-preparations">1. Preparations</h2> |
| <ul> |
| <li>dubbo-go cli tools and dependent tools have been installed</li> |
| <li>Create a new demo application</li> |
| <li>Start Nacos and Zookeeper locally</li> |
| </ul> |
| <h2 id="2-using-multiple-registries">2. Using multiple registries</h2> |
| <p>Modify the server configuration go-server/conf/dubbogo.yaml, and register the service on two registration centers at the same time.</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">zookeeper</span>: <span style="color:#586e75"># Specify the zookeeper registration center</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: zookeeper |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">2181</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">nacos</span>: <span style="color:#586e75"># Specify the nacos registration center</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">triple</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterProvider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry-ids</span>: <span style="color:#586e75"># Simultaneous registration</span> |
| </span></span><span style="display:flex;"><span> - zookeeper |
| </span></span><span style="display:flex;"><span> - nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: <span style="color:#2aa198">&#34;&#34;</span> |
| </span></span></code></pre></div><p>Modify client configuration go-client/conf/dubbogo.yaml</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">nacos</span>: <span style="color:#586e75"># Specify the nacos registration center</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">8848</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">zookeeper</span>: <span style="color:#586e75"># Specify the zookeeper registration center</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: zookeeper |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">2181</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">consumer</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">references</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterClientImpl</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry-ids</span>: <span style="color:#586e75"># Discovered from the nacos registry service</span> |
| </span></span><span style="display:flex;"><span> - nacos |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: <span style="color:#2aa198">&#34;&#34;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">GreeterClientImpl2</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry-ids</span>: <span style="color:#586e75"># service discovery from zookeeper registry</span> |
| </span></span><span style="display:flex;"><span> - zookeeper |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: tri |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: <span style="color:#2aa198">&#34;&#34;</span> |
| </span></span></code></pre></div><p>Modify the client code and define a client stub class named GreeterClientImpl2:</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><span style="color:#268bd2">var</span> grpcGreeterImpl2 = <span style="color:#b58900">new</span>(GreeterClientImpl2) |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">type</span> GreeterClientImpl2 <span style="color:#268bd2">struct</span>{ |
| </span></span><span style="display:flex;"><span>api. GreeterClientImpl |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><p>The client writes the calling code:</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><span style="color:#268bd2">func</span> <span style="color:#268bd2">main</span>() { |
| </span></span><span style="display:flex;"><span>config. <span style="color:#268bd2">SetConsumerService</span>(grpcGreeterImpl) |
| </span></span><span style="display:flex;"><span>config.<span style="color:#268bd2">SetConsumerService</span>(grpcGreeterImpl2) |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">if</span> err <span style="color:#719e07">:=</span> config.<span style="color:#268bd2">Load</span>(); err <span style="color:#719e07">!=</span> <span style="color:#cb4b16">nil</span> { |
| </span></span><span style="display:flex;"><span><span style="color:#b58900">panic</span>(err) |
| </span></span><span style="display:flex;"><span>} |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>logger.<span style="color:#268bd2">Info</span>(<span style="color:#2aa198">&#34;start to test dubbo&#34;</span>) |
| </span></span><span style="display:flex;"><span>req <span style="color:#719e07">:=</span> <span style="color:#719e07">&amp;</span>api.HelloRequest{ |
| </span></span><span style="display:flex;"><span>Name: <span style="color:#2aa198">&#34;Laurence&#34;</span>, |
| </span></span><span style="display:flex;"><span>} |
| </span></span><span style="display:flex;"><span>reply, err <span style="color:#719e07">:=</span> grpcGreeterImpl.<span style="color:#268bd2">SayHello</span>(context.<span style="color:#268bd2">Background</span>(), req) |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">if</span> err <span style="color:#719e07">!=</span> <span style="color:#cb4b16">nil</span> { |
| </span></span><span style="display:flex;"><span>logger. <span style="color:#268bd2">Error</span>(err) |
| </span></span><span style="display:flex;"><span>} |
| </span></span><span style="display:flex;"><span>logger.<span style="color:#268bd2">Infof</span>(<span style="color:#2aa198">&#34;nacos server response result: %v\n&#34;</span>, reply) |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>reply, err = grpcGreeterImpl2. <span style="color:#268bd2">SayHello</span>(context. <span style="color:#268bd2">Background</span>(), req) |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">if</span> err <span style="color:#719e07">!=</span> <span style="color:#cb4b16">nil</span> { |
| </span></span><span style="display:flex;"><span>logger. <span style="color:#268bd2">Error</span>(err) |
| </span></span><span style="display:flex;"><span>} |
| </span></span><span style="display:flex;"><span>logger.<span style="color:#268bd2">Infof</span>(<span style="color:#2aa198">&#34;zk server response result: %v\n&#34;</span>, reply) |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><h2 id="3-multi-registry-service-discovery-verification">3. Multi-registry service discovery verification</h2> |
| <p>Start go-server/cmd and go-client/cmd respectively to view two logs of successful calls:</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:55 nacos server response result: name:&#34;Hello laurence&#34; id:&#34;12345&#34; age:21 |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>INFO cmd/client.go:61 zk server response result: name:&#34;Hello laurence&#34; id:&#34;12345&#34; age:21 |
| </span></span></code></pre></div></description></item></channel></rss> |