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开发所需的环境配置完成。