安装使用
for windows
安装Consul
下载安装并设置环境变量,下载地址:https://www.consul.io/downloads
安装Go
下载安装并设置环境变量,下载地址:https://golang.org/dl/
安装Protobuf
下载protoc
https://github.com/protocolbuffers/protobuf/releases/tag/v3.18.0
下载protoc-gen-go
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
下载protoc-gen-micro
$ go get github.com/asim/go-micro/cmd/protoc-gen-micro/v3
安装Micro
安装
$ go get -u github.com/micro/micro
for linux
安装Consul
$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
$ sudo yum -y install consul
安装GO
# 下载64-bit Linux
$ wget https://dl.google.com/go/go1.16.8.linux-amd64.tar.gz
# 解压
$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.8.linux-amd64.tar.gz
# 检查go版本
$ go version
设置环境变量(临时,重启服务器后失效)
$ export PATH=$PATH:/usr/local/go/bin
设置环境变量(永久,重启服务器后仍有效)
编辑/etc/profile
$ vim /etc/profile
添加以下配置到文件末尾,保存
# Go
export PATH=$PATH:/usr/local/go/bin
export GO111MODULE="on"
export GOPROXY=https://goproxy.cn,direct
生效
$ source /etc/profile
安装Protobuf
下载protoc
https://github.com/protocolbuffers/protobuf/releases/tag/v3.18.0
下载protoc-gen-go
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
下载protoc-gen-micro
$ go get github.com/asim/go-micro/cmd/protoc-gen-micro/v3
*安装Micro
安装
$ go get -u github.com/micro/micro
安装常见错误解决方案:https://blog.csdn.net/github_38194421/article/details/104897865
运行
启动Consul
启动命令根据需要三选一
# 内部访问
$ consul agent -data-dir=/tmp/consul
# 只能本地可以访问
$ consul agent -dev
# 指定ip可以访问
$ consul agent -dev -client 0.0.0.0 -ui 指定ip
启动Micro API网关
micro --registry=consul --registry_address=127.0.0.1:8500 --server_name=aiwanbao.micro.api api --namespace=aiwanbao.micro.api
启动Micro服务
# 默认注册到etcd服务发现
go run main.go
# 使用consul和指定consul地址
go run main.go --registry=consul --registry_address=127.0.0.1:8500
命令参数说明
命令参数 | 说明 |
---|---|
--registry | 注册服务 |
--registry_address | 服务地址 |
--server_name | 服务名 |
--namespace | 空间命名 |
接口调用
网关默认会以服务名/api名/方法名的方式将服务接口映射为http路径,接受各种类型(POST/GET/...)的请求:
http://{host}:{post}/{serverName}/{apiName}/{methodName}