一. 环境准备。
- 安装依赖包
这里我用的是gomod
。
- 安装
protocol buffers
。
下载地址: https://github.com/protocolbuffers/protobuf/releases
下载解压后放入PATH路径下
二. 实现服务端。
- 新建
account.proto
文件。
syntax = \"proto3\";service Greeter {rpc Hello(HelloRequest) returns (HelloResponse) {}}message HelloRequest {string name = 1;}message HelloResponse {string greeting = 2;}
- 使用
protoc
生成相应的代码
protoc --go_out=. --micro_out=. proto/greeter.proto
- 服务端代码
package mainimport (\"context\"\"fmt\"proto \"goMicroApp/hello-world/proto\"\"github.com/micro/go-micro\")type Greeter struct{}func (g *Greeter) Hello(ctx context.Context, req *proto.HelloRequest, rsp *proto.HelloResponse) error {rsp.Greeting = \"你好,\" + req.Namereturn nil}func main() {// 创建服务,除了服务名,其它选项可加可不加,比如Version版本号、Metadata元数据等service := micro.NewService(micro.Name(\"greeter.service\"),micro.Version(\"latest\"),)service.Init()// 注册服务proto.RegisterGreeterHandler(service.Server(), new(Greeter))// 启动服务if err := service.Run(); err != nil {fmt.Println(err)}}
三. 实现客户端。
- 客户端代码
package mainimport (\"context\"\"fmt\"proto \"goMicroApp/hello-world/proto\"\"github.com/micro/go-micro\")func main() {// 定义服务,可以传入其它可选参数service := micro.NewService(micro.Name(\"greeter.client\"))service.Init()// 创建客户端greeter := proto.NewGreeterService(\"greeter.service\", service.Client())// 调用greeter服务rsp, err := greeter.Hello(context.TODO(), &proto.HelloRequest{Name: \"World\"})if err != nil {fmt.Println(err)return}// 打印响应结果fmt.Println(rsp.Greeting)}
四. 运行。
- 运行服务端。
go run server.go
- 运行客户端得到结果。
PS C:\\Users\\admin\\go\\src\\goMicroApp\\hello-world\\service> go run client.go你好,World
MicroWeb可视化页面
- 安装
go get github.com/micro/micro
- 运行
PS C:\\Users\\admin\\go> micro web
- 访问
http://localhost:8082/
接口信息:
测试请求:
总结
这是我在B站看到的go-micro微服务框架教程,刚看到第一章,好多的概念我还是没整明白(如consul,etcd服务发现等),看着迷迷糊糊的,上面的代码是我照葫芦画瓢做的,做一个学习记录吧,防止我以后忘记了。
学习教程: https://space.bilibili.com/478093818?spm_id_from=333.788.b_765f7570696e666f.1