内容简介:首先关于
go-micro
是一种可插拔的RPC分布式系统微服务开发框架,这一章主要介绍一下入门的相关内容。
服务发现依赖项
首先 micro
这个框架需要且依赖于服务发现工具(service discovery),框架默认的服务发现 工具 是 Consul
,同时框架的插拔机制也可确保能够切换到其他的服务发现工具上,如Etcd、NATS等,详见
micro plugins
;
关于 consul
的安装与运行:
$ brew install consul # 安装 $ consul agent -dev # 运行
gRPC的安装
由于 micro
框架基于 gRPC
,故需要安装相关依赖项,同时安装时确保 go version
版本在 1.6
以上;
安装 gRPC
$ go get -u google.golang.org/grpc
安装Protocol Buffers v3
安装用于生成 gRPC
服务代码的 protoc
编译器工具;
最简单的方式是通过在 protobuf工具文件列表
中,以查看 protoc-<version>-<platform>.zip
文件名格式的方式找出符合你当前版本及系统平台的安装包,找到后下载解压放置于 bin
目录、修改环境变量PATH等;
同时安装protoc go插件
$ go get -u github.com/golang/protobuf/protoc-gen-go
Micro相关安装
框架包的安装
$ go get github.com/micro/go-micro
protoc micro插件安装
用于通过 .proto
文件生成 .micro.go
代码文件
$ go get github.com/micro/protoc-gen-micro
micro工具包的安装
$ go get github.com/micro/micro
micro 命令行工具可以提供诸如服务列表查看、服务详情查看、调用服务接口等功能;
实践一下
首先,创建一个 user.proto
结构文件
syntax = "proto3"; service User { rpc Hello(Request) returns (Response) {} } message Request { string name = 1; } message Response { string msg = 1; }
其次,通过proto文件编译生成代码
protoc --proto_path=$GOPATH/src:. --micro_out=. --go_out=. user.proto
此时,通过 protoc
工具对 user.proto
文件的编译,生成了两个 go 文件:
- user.micro.go
- user.pb.go
然后,分别编写服务端及客户端代码
服务端 service.go
package main import ( "context" "fmt" proto "github.com/JiangInk/coin_exchange/ms-user/proto" micro "github.com/micro/go-micro" ) type User struct{} func (u *User)Hello(ctx context.Context, req *proto.Request, res *proto.Response)error { res.Msg = "Hello " + req.Name return nil } func main() { service := micro.NewService( micro.Name("user"), ) service.Init() proto.RegisterUserHandler(service.Server(), new(User)) if err := service.Run(); err != nil { fmt.Println(err) } }
客户端 client.go
package main import ( "context" "fmt" proto "github.com/JiangInk/coin_exchange/ms-user/proto" micro "github.com/micro/go-micro" ) func main() { service := micro.NewService(micro.Name("user.client")) service.Init() user := proto.NewUserService("user", service.Client()) res, err := user.Hello(context.TODO(), &proto.Request{Name: "World ^_^"}) if err != nil { fmt.Println(err) } fmt.Println(res.Msg) }
最后,运行起来
首先启动服务发现
$ consul agent -dev
可通过访问: http://127.0.0.1:8500/ui/ 查看服务;
启动服务端程序
$ go run service.go
此时刷新: http://127.0.0.1:8500/ui/
页面会发现新服务 user
;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mobilizing Web Sites
Layon, Kristofer / 2011-12 / 266.00元
Everyone has been talking about the mobile web in recent years, and more of us are browsing the web on smartphones and similar devices than ever before. But most of what we are viewing has not yet bee......一起来看看 《Mobilizing Web Sites》 这本书的介绍吧!