go-micronats_go-micro_go-micro网关

上一篇文章中创业项目,我们把编写以及运行微服务所需的环境都准备完毕了,那么接下来我们正式开始使用go-micro来创建一个项目。

正式开始之前,我们需要了解的一些知识:

关于go mod:go mod 是go官方推出的go包管理工具,如果你早已受够了gopath的束缚,那么来吧,就现在!拥抱go mod,抛弃gopath吧!

Go 1.11 Modules 官方说明文档()

Protobuf3文档()

micro中文文档()

创建项目

在自己习惯的工作目录(任意目录均可,因为咱有go mod,前提是设置了环境变量“GO111MODULE”为on或者auto)创建项目目录:

#创建项目目录
mkdir /home/gcc/projects/micro-demo
cd /home/gcc/projects/micro-demo
#通过micro创建一个微服务项目结构
micro new --namespace=go.micro --type=srv --alias=order --gopath=false order-srv

关于micro new 命令更多参数用法请参阅文档:

上述命令执行后,micro会为你自动生成如下的一个项目结构:

├── main.go
├── plugin.go
├── handler
│ └── order.go
├── subscriber
│ └── order.go
├── proto/order
│ └── order.proto
├── Dockerfile
├── Makefile
├── README.md
└── go.mod

编辑go.mod文件:

vim /home/gcc/projects/micro-demo/order-srv/go.mod
#将文件第一行的 module order-srv 修改为 module micro-demo/order-srv
#解释下为何这么做:以微服务形式开发项目,那么一个微服务就是一个可以独立部署的模块。对于开发过程中也可以看做是一个相对独立的项目。而两个不同的微服务之间的关联应该就剩下相互之间的RPC调用,RPC调用需要知道对方RPC服务的入参和出参的规范,这个规范就是在proto文件中定义好了,所以在开发过程中需要import别的微服务的接口、结构体等定义的包。这里修改module名称就是为了后面开发过程中能方便的导入别的微服务的包。可能解释的有点晦涩,没关系,继续往下看,等用到了就会明白。

编辑proto文件:

vim /home/gcc/projects/micro-demo/order-srv/proto/order/order.proto

你会发现micro已经为我们预先写好了一些protobuf的定义,但在实际项目开发中这些代码其实没什么用,你应该完全清空后go-micro,按照自己的实际业务重新写。此处,因为只是给大家演示如何使用micro开发微服务,所以便直接使用micro给我生成好的proto文件了(请允许我偷个懒哈(*≧▽≦*))。

根据proto文件生成相应的go代码:

cd /home/gcc/projects/micro-demo/order-srv
protoc --proto_path=. --go_out=. --micro_out=. proto/order/order.proto

上述命令执行后,会在/home/gcc/projects/micro-demo/order-srv/proto/order目录下多出order.micro.go 和order.pb.go这两个文件,这两个文件其实就是根据你的proto文件自动帮你定义了一些接口、结构体和方法,我们无需对这两个文件做任何修改go-micro,直接使用即可。

打开main.go文件,发现缺少很多依赖包:

main.go

没关系,不慌,我们有go mod,一个命令直接搞定。

cd /home/gcc/projects/micro-demo/order-srv
go mod tidy

运行微服务:

cd /home/gcc/projects/micro-demo/order-srv
go run main.go

服务启动成功后会在控制台看到如下输出:

注册会员查看全部内容……

限时特惠本站每日持续更新海量各大内部创业教程,年会员只要98元,全站资源免费下载
点击查看详情
站长微信:9200327