一,依赖安装
1,强制项:
( 1)go-micro。 go-micro是一个框架,你可以理解它是一个库,它提供了一个平台,你可以很快的开发微服务,而且你更多的关注业务逻辑的开发。
(2)protobuf。go-micro中消息交互的格式默认是protobuf,所以你需要安装protobuf,并且还需要安装protoc-gen-go和protoc-gen-micro这两个插件。protoc-gen-go是供protoc生成工具生成go文件的调用插件,protoc-gen-micro是供protoc-gen-go生成micro格式的go文件所需的插件。
2, 非强制项
(1)micro工具,它是辅助你开发微服务使用的,因为你基于go-micro开发微服务,他们之间是可以相互通信的,外面访问不到。它可以辅助调试你的程序。如果你自己开发两个程序,互相调试,并且只是想先跑跑例子看看,那么这个工具可以暂时不装。
(2)服务发现工具。go-micro默认提供mdns方式的服务注册,如果你只是学习过程中,可以先不安装。你的程序也可以运行并且跑起来。
二,下载go包的方式
1,gopath方式
我喜欢的方式是把第三方的包下载好(直接去github下载或go get),放到gopath/src中,因为我的项目也在gopath/src目录中,所以直接可以使用,并且也方便去查看源码。但是这也有一个弊端,就是当第三方包层层依赖的话,你手动去做这件事会很麻烦。可能我之前用golang开发一些工具依赖都很少。所以一直这样很舒服。
2,go mod方式
因为go-micro环境搭建依赖很多,而且我想尽快使用起来这个框架,最后我还是采纳了go mod这种方式。不过过程中仍然遇到很多问题。稍后说明。
三,创建项目的方式
1,原始方式
因为你已经把go-micro等go包下载完成,接下来你可以直接创建项目,然后把go-micro作为第三方包引入,调用api接口。创建对应微服务。
2,简单方式
你可以直接用micro工具创建出一个微服务的脚手架。大体上的流程就是打开控制台。输入micro.new命令。
四,过程中遇到的问题
1,你要选择golang的版本要低于1.15。因为1.15之后对go-micro用到的一个数据结构发生了变化,导致和go-micro不兼容。程序会报问题。我目前卸载go 1.15.然后安装了一个go 1.13
2,go-mod处出的问题,大体上就是go-micro包基于grpc开发的。然后最新的grpcv2.27也出现了不兼容的问题。需要降级到v.v26.所以这里你需要对go-mod原理,如何运行的点好好理解一下,由于我刚开始用go-mod,解决以上问题就耗费更的时间了。后来花时间去学习了一个go-mod的运行流程。
五,我想说的话
这篇文章不适合你对go-micro没有操作过,上来就读。这篇是我在搭建过程中,看了各种个样的文章,和搭建过程中遇到问题之后解决。包括更深入的去理解go-micro之后的总结。适合你看到五花八门的搭建方式,你一头雾水。那么这里会帮你修正搭建go-micro的认知。
有疑问加站长微信联系(非本文作者)