前言
- Go Micro是一个插件化的基础框架,基于此可以构建微服务,Micro的设计哲学是可插拔的插件化架构
- 在架构之外,它默认实现了consul作为服务发现(2019年源码修改了默认使用mdns),通过http进行通信,通过protobuf和json进行编解码
安装
- 本次采用micro3.0 +golang 1.14.1+protoc 3.7.1的配置
- 首先安装micro
go get github.com/micro/micro/v3
- 安装完后 按如下如图就可以执行成功,成功后需要进行登录
-
micro login username:admin // 输入用户名密码 pawword:micro
就可以登录成功
新建一个服务
在目录中执行 如下
[root@10-13-82-233 go]# micro new first
Creating service first
.
├── micro.mu
├── main.go
├── generate.go
├── handler
│ └── first.go
├── proto
│ └── first.proto
├── Dockerfile
├── Makefile
├── README.md
├── .gitignore
└── go.mod
download protoc zip packages (protoc-$VERSION-$PLATFORM.zip) and install:
visit https://github.com/protocolbuffers/protobuf/releases
download protobuf for micro:
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get github.com/micro/micro/v3/cmd/protoc-gen-micro
compile the proto file first.proto:
cd first
make proto
就创建了一个fisrt服务,此时还不能运行,需要执行上面的提示内容安装需要的包文件,然后使用protoc 生成对应的服务。
在first目录下执行 go run main.go会启动服务 ,或者在first目录上次执行 micro run first 就可以启动服务。
注意:
1、3.0的版本和2.0的版本差异还是挺大的,在2.0的版本中自带了web界面,感觉3.0简洁了不少功能
2.使用micro3.0版本以上那么golang尽量使用高版本 1.14以上 ,protoc 尽量用3版本
3.如果使用micro2版本,建议使用golang1.14版本以下,protoc使用2版本
4.protoc资源路径:Releases · protocolbuffers/protobuf · GitHub
5.如果使用micro2在生成micro/v2时,protoc3生成micro.protoc文件导致的版本冲突。
可将生成的*.pb.micro.go文件中的v3依赖改为v2依赖即可
修改前
// 修改前,报错
import (
context "context"
server "github.com/micro/micro/v3/service/server"
client "github.com/micro/micro/v3/service/client"
api "github.com/micro/micro/v3/service/api"
)
// 修改后
import (
context "context"
client "github.com/micro/go-micro/v2/client"
server "github.com/micro/go-micro/v2/server"
api "github.com/micro/go-micro/v2/api"
math "math"
proto "github.com/golang/protobuf/proto"
)