go-micro是基于grpc的一个框架,一样也是用protobuf进行序列化,主要设计哲学是“可插拔”,主要是用于分布式系统开发。至于为什么用go-micro,主要是它对grpc封装的很好,让我们可以更便利。
下面是它的架构图
同样的一开始也是要编写.proto 文件
hello.proto文件
syntax = "proto3"; //指定语法版本
package helloword; //指定生成后的 hello.pb.go 的包名
//一个 RPC 服务通过参数和返回类型来指定可以远程调用的方法
service Hello {
// rpc 定义可远程调用服务
rpc HelloWorld (HelloRequest) returns (HelloReply) {
}
}
//消息定义的关键字,相当于struct
message HelloRequest {
// [修饰符] 类型 字段名 = 标识符;
//标识符是用来在二进制格式中识别各个字段的,可以简单理解为序列化后的二进制数据中的布局位置顺序
string name = 1;
}
message HelloReply {
string message = 1;
}
和上一篇博客写的hello.proto
没有任何变化,因为两者都是用protobuf
接下来在终端键入protoc -I . --micro_out=. --go_out=. ./hello.proto
关于这条命令,在上一篇的博客中介绍过了,这里就不多说了,唯一不同的就是这里多了一个--micro_out
参数,这个参数其实和--go_out
没有什么大的区别,是指定编译.proto文件后生成的.micro.go文件的路径
可以看到在当前路径下会生成两个文件,与grpc不同,go-micro会多生成一个.micro.go文件,这个就是go-micro的接口文件