<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Go-Micro on 月盾的博客</title>
    <link>https://blog.hopefly.top/tags/go-micro/</link>
    <description>Recent content in Go-Micro on 月盾的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Tue, 17 Mar 2020 09:41:28 +0000</lastBuildDate>
    <atom:link href="https://blog.hopefly.top/tags/go-micro/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>go-micro线上部署，注册服务到etcd</title>
      <link>https://blog.hopefly.top/blogdetail/5e709b485bd8165f28d22394/</link>
      <pubDate>Tue, 17 Mar 2020 09:41:28 +0000</pubDate>
      <guid>https://blog.hopefly.top/blogdetail/5e709b485bd8165f28d22394/</guid>
      <description>&lt;h3 id=&#34;线上部署&#34;&gt;线上部署&lt;/h3&gt;&#xA;&lt;p&gt;在线上部署就不能使用&lt;code&gt;go run main.go&lt;/code&gt;命令了，需要打包编译成可执行文件。&#xA;linux系统需要这样编译：&lt;code&gt;GOOS=linux go build -o service main.go&lt;/code&gt;，就是在windows系统上进行交叉编译，可根据自己服务器情况修改参数。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;go build -o service main.go&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;go build -o api api/api.go&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;线上的restful api也不能使用&lt;code&gt;micro api&lt;/code&gt;了。需要选择适合自己的web服务框架，在web服务中调用api服务。&lt;/p&gt;&#xA;&lt;h3 id=&#34;etcd启动&#34;&gt;etcd启动&lt;/h3&gt;&#xA;&lt;p&gt;线上etcd和本地启动有区别，如果etcd是单独的服务器，那么在不加任何参数的情况下直接启动，那基本是调不通的。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ./service --registry&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;etcd --registry_address&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;xx.xx.xx.xx:2379&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-03-17 17:04:42 Starting &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;service&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; go.micro.srv.user&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-03-17 17:04:42 Server &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;grpc&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Listening on &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;::&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;:48493&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-03-17 17:04:42 Registry &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;etcd&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; Registering node: go.micro.srv.user-f32a2950-8e59-44d4-ac86-f4e1ec103395&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;level&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;warn&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ts&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2020-03-17T17:04:47.849+0800&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;caller&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;clientv3/retry_interceptor.go:61&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;msg&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;retrying of unary invoker failed&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;target&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;endpoint://client-e45decee-12bf-4a9b-a7ab-f92eece39420/xx.xx.xx.xx:2379&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;attempt&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rpc error: code = DeadlineExceeded desc = latest connection error: connection error: desc = \&amp;#34;transport: Error while dialing dial tcp xx.xx.xx.xx:2379: connect: connection refused\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2020-03-17 17:04:47 Server register error: %!&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;EXTRA context.deadlineExceededError&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;context deadline exceeded&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这就是错误示例。&#xA;为了能顺利看到胜利的结果，需要这样启动etcd:&lt;/p&gt;</description>
    </item>
    <item>
      <title>go-micro v2弃用了consul作为默认的服务发现</title>
      <link>https://blog.hopefly.top/blogdetail/5e6c860e5bd8165f28d2210b/</link>
      <pubDate>Sat, 14 Mar 2020 07:21:50 +0000</pubDate>
      <guid>https://blog.hopefly.top/blogdetail/5e6c860e5bd8165f28d2210b/</guid>
      <description>&lt;p&gt;很遗憾，go-micro v2版本不再使用&lt;strong&gt;consul&lt;/strong&gt;作为服务发现中间件，官方文档也没有&lt;strong&gt;consul&lt;/strong&gt;相关的文档，而是默认改用了&lt;strong&gt;mdns&lt;/strong&gt;，生产推荐&lt;strong&gt;etcd&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;问题：&lt;a href=&#34;https://github.com/micro/go-micro/issues/890&#34;&gt;I can&amp;rsquo;t set registry with consul&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;解答：《&lt;a href=&#34;https://micro.mu/blog/2019/10/04/deprecating-consul.html&#34;&gt;Deprecating Consul in favour of Etcd&lt;/a&gt;》&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;超过4年的时间，Consul一直是Micro的默认服务发现系统之一，为我们提供了良好的服务。实际上，从一开始，它就是用于注册表的默认机制以及入门所需的唯一基础依赖项。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;从那时起，世界在不断发展，原生云技术也在不断发展。我们发现了许多与使用Consul的方式有关的问题。这不是对Consul的打击，而是对我们的用例的反思，以及对继续前进的需求。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;例如，我们将元数据和服务端点信息进行二进制编码，压缩和base64编码，然后再将它们存储为Consul标签，因为没有其他方法可以这样做。我们还非常严重地滥用Consul的分布式属性，这导致了许多关于raft共识的问题。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;不幸的是，我们发现现在该继续前进了。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;自2014年以来，Kubernetes真正成为了容器编排和基础服务平台中的一支计算力。因此，etcd成为了他们选择的键值存储的一种，它是基于raft共识构建的分布式键值存储。它已经发展到可以满足kubernetes的规模需求，并且已经以其他开源项目所没有的方式经过了实战测试。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Etcd还是用于二进制数据的非常标准的Get / Put / Delete存储，这意味着我们可以轻松地编码和存储服务元数据，而不会出现零问题。它对所存储数据的格式没有意见。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;过去一周中，我们已将etcd迁移为Micro中的默认服务发现机制之一，并将在未来几周内弃用Consul。这是什么意思？好吧，我们将领事移交给我们社区维护的go-plugins存储库，并专注于支持etcd。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;我们知道许多用户正在使用Consul，这可能会导致中断。对我们来说，这是通往v2的重大突破，因此我们的下一个发行版将被标记为v2。您可以放心，您的v1发行版将继续按原样运行，但希望我们发布的下一个发行版是micro v2.0.0。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;参考项目：&lt;a href=&#34;https://github.com/yuedun/micro-service&#34;&gt;micro-service&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
