Go Micro是一个基于Golang的微服务框架,它提供了微服务分布式系统的核心组件(例如服务发现、负载均衡、RPC等),同时,Go Micro提供插件机制,方便集成微服务相关工具(例如消息队列Kafka,服务发现Consul等),基于Go Micro可以快速搭建自己的微服务系统。本文描述了在macOS下如何配置Go Micro的开发环境。
1. 安装protoc-gen-micro
Go Micro默认使用protobuf作为通信协议的定义,故需要安装protoc-gen-micro来生成服务的接口代码,这样省去了很多重复的编码工作,同时也保证了代码的准确性。protoc-gen-micro依赖于protoc和protoc-gen-go。
第一步,安装protoc,可以源码编译安装,也可以直接下载编译好的可执行文件。源码安装流程比较繁琐,建议直接下载可执行文件即可。下载地址:https://github.com/protocolbuffers/protobuf/releases,根据系统类型选择下载即可。当前我们下载的是:protoc-3.11.2-osx-x86_64.zip。
下载完成后,解压到用户根目录的Library路径下,并进入终端配置系统环境变量:
vi ~/.zshenv
将protoc的bin文件夹加入到PATH定义中:
export PATH=$PATH:$GOPATH/bin:$HOME/Library/protoc-3.11.2-osx-x86_64/bin
重启终端,然后使用如下指令验证:
protoc --version
若配置成功,则会有类似如下的输出:
libprotoc 3.11.2
第二步,,终端执行如下指令(执行该指令前,需要先安装好Golang,具体方法可参见:macOS配置Golang):
go get -u github.com/golang/protobuf/protoc-gen-go
指令执行成功后,查看GOPATH:
ls $GOPATH/bin
会看到protoc-gen-go文件。
最后就是了,执行如下指令:
go get github.com/micro/protoc-gen-micro
执行完成后,我们验证一下:
mkdir ~/test
vi ~/test/test.proto
填写如下文件内容:
syntax = "proto3";
service Test{
rpc Hello(Request) returns (Response) {}
}
message Request {
string name = 1;
}
message Response {
string msg = 1;
}
保存后,执行如下指令:
cd ~/test
protoc --proto_path=$GOPATH/src:. --micro_out=. --go_out=. test.proto
若安装成功,则当前路径下会生成两个文件:test.pb.go和test.pb.micro.go。此时,即可删除测试文件:
cd ~ && rm -rf test
2. 安装Go Micro
Go Micro采用了Go Modules机制,我们通过如下指令安装最新版本:
GO111MODULE=on go get github.com/micro/go-micro/v2@latest
执行该指令时,会有类似如下的输出:
go: finding github.com/micro/go-micro v2.0.0
go: downloading github.com/micro/go-micro v2.0.0
go: extracting github.com/micro/go-micro v2.0.0
使用Go Modules时,由于google网址在国内被墙,需要改为国内的网址,具体macOS配置Golang参见中关于Go Modules的配置说明。
执行完成后,会看到Go Micro的代码位于$GOPATH/pkg/mod/http://github.com/micro/go-micro路径。
3. 安装Micro
Micro是提供给Go Micro的运行时工具,用于部署和运维。一种简单的方式是通过如下指令自动安装:
GO111MODULE=on go get github.com/micro/micro/v2@latest
但是,通过该方法安装的micro默认使用的服务发现组件是mdns,没有集成Consul、Etcd等第三方的组件。我们后面需要使用Consul,所以此时需要自己手动编译安装:
首先,直接从github拉取代码:
cd $GOPATH/src
git clone https://github.com/micro/micro.git
cd micro
然后,新建plugins.go文件:
package main
import (
_ "github.com/micro/go-plugins/registry/consul/v2"
)
最后,重新编译安装:
go install
完成后,执行如下指令:
micro --version
有类似如下输出,则表示安装成功:
micro version 2.0.0
4. 安装Consul
首先,下载Consul的安装包:
直接使用浏览器下载会比较慢,可以复制下载链接,使用迅雷等下载工具下载。下载完成后,解压到如下路径:
$HOME/Library/consul_1.6.3_darwin_amd64/consul
同时,配置系统环境变量:
vi ~/.zshenv
加入consul的路径:
export PATH=$PATH:$GOPATH/bin:$HOME/Library/protoc-3.11.2-osx-x86_64/bin:$HOME/Library/consul_1.6.3_darwin_amd64
重启终端,执行如下指令:
consul version
若安装成功,则有类似如下输出:
Consul v1.0.1
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
常用的指令有:
consul agent # 启动代理服务
consul members # 查询代理服务列表
consul leave # 关闭代理服务
至此,Go Micro开发所需的环境配置完成。