概述
micro是一个工具集,用来帮助开发者创建和管理微服务。它包括两部分:
- go-micro:它是一个go语言的微服务开发框架。
- micro:它是一个命令行工具,这个工具是基于go-micro开发的。
另外go-plugins作为一组插件,在开发过程中也是必要的。通过插件,我们在服务发现、异步消息和传输协议等方面有了更多的选择。
go-micro的体系架构
go-micro的设计目标是简化微服务的开发和分布式系统的创建。
安装micro
在golang 1.14以后需要使用如下命令进行micro的安装:
export GO111MODULE=on
go get github.com/micro/micro/v2
在安装结束后,如下命令可以确认安装是否正确完成:
micro --version
如果显示如下信息,则可确认micro已经正确安装:
在成功安装了micro后,我们就可以进行微服务的开发了。
开发
创建项目
作为开发的第一步,我们可以使用如下命令创建一个项目:
micro new helloworld --namespace=com.pera --gopath=false
参数说明
- micro new:创建一个gRPC服务;
- helloworld:指定服务的名称;
- –namespace=com.pera:为服务提供一个命名空间;
- –gopath=false:在当前目录中生成代码,而不是在$GOPATH中生成代码;
项目结构
在我们执行完项目创建命令后,micro会给我们生成如下结构的项目文件:
项目文件说明
- main.go:项目主文件;
- generate.go:用于整合go generate。确保在go generate执行过程中可以自动调用make proto;
- plugin.go:初始情况下是一个空文件,主要用于管理所有需要使用的插件;
- proto/helloworld/helloworld.proto:gRPC的服务定义文件,定义了一个名为Helloworld的服务。在这个服务里定义了三种典型的RPC方法:unary RPC,server streaming RPC和bidirectional streaming RPC;
- proto/helloworld/helloworld.pb.go:是protoc编译proto文件生成的go语言的源代码文件;
- proto/helloworld/helloworld.pb.micro.go:通过protoc-gen-micro生成的go语言的源代码文件,用于进一步简化开发者工作。它定义了HelloworldService接口和HelloworldHandler接口;
- handler/helloworld.go:用于实现具体的业务逻辑。它定义了一个实现了HelloworldHandler接口的名为Helloworld的结构体;
- subscriber/helloworld.go:实现了消息的异步处理。在这个文件中它提供了两种处理异步消息的方法:一个是通过结构体的方法,另一个是通过函数;
- Dockerfile:定义如何基于项目文件创建一个docker的镜像;
- Makefile:定义了一些常用的任务,如:编译、测试、创建docker镜像等;
- README.md:包含项目的基础信息;
- .gitignore: