社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
keyword:iogo,golang,grpc,protobuf,etcd,zookeeper,microservice,distributed lock,service discovery,cluster,load balancing,微服务,分布式锁,服务发现,负载均衡
iogo微服务框架是对高效的远程访问组件grpc(支持多平台多语言,使用protobuf进行二进制数据序列化)进行更加易用性的封装,减少开发人员在底层通信方面的开发工作,将精力集中放在应用逻辑的开发上面,并且可以轻而易举的进行服务器集群的动态伸缩操作。借助命令行工具iogoc,可以快速创建微服务集群的工程模板。“一个人写一个集群”是iogo的初衷,对于大型的应用场景来说未免是大话了,但对于中小型的应用场景来说未免不可,尤其更加方便于小型的开发团队。
iogo仅仅是对grpc进行了易用性的封装,并有效保留grpc的接口以便于代码的移植。同时iogo封装了分布式锁,便于并发操作时的一致性操作。iogo的思想是每个微服务都有一个server端提供method服务,都有一个client端进行微服务之间的访问。
iogo-demo是基于iogo微服务框架的基础上提供的微服务集群开发模板示例,以演示iogo所能担负的集群开发任务。test-client利用了服务发现和内部负载均衡来担任实际场景中的反向代理和微服务网关,所有iogo-demo可以轻装进行测试。
先决条件:已经安装配置golang和IDE。
下载grpc、protobu、etcd的golang组件包,并解压到$gopath/src/目录下:https://download.csdn.net/download/guestcode/10939819
下载protobuf的工具protoc,解压后将bin目录设置到系统的path环境变量中:https://download.csdn.net/download/guestcode/10939277
其它安装可以参考:
linux:从零开始搭建 gRPC 服务 - Golang 篇(一)
windows:grpc-golang在win7/8/10下的安装配置
最新版本可以从一下获得:
iogo(iogoc):https://github.com/freetoo/iogo
iogo-demo:https://github.com/freetoo/iogo-demo
请下载或克隆到$gopath/src/目录下,要使用iogoc工具的请把目录xxx/iogo/iogoc/设置到系统的path环境变量中
除NewConnectByAddr和服务发现的IsInline函数之外,其它的操作应在Start之前。
其它iogo框架的使用方法参阅iogo-demo或者iogoc工具创建的示例源码。
创建集群项目模板(创建集群test-cluster及集群的服务程序svc-app,如果集群目录已经存在则单独创建服务项目svc-app):
iogoc -csvc svc-app -clus test-cluster
除服务项目svc-app之外,iogoc还会生成集群项目目录及示例服务项目svc-hello和测试客户端test-client,集群test-cluster的目录结构如下:
test-cluster
├── config
│ └── config.go
├── iogo
│ └── iogo.go
├── proto
│ ├── hello.pb.go
│ └── hello.proto
├── svc-app
│ ├── main.go
│ └── service
│ ├── client.go
│ └── server.go
├── svc-hello
│ ├── main.go
│ ├── service
│ │ ├── client.go
│ │ └── server.go
│ └── svc-hello.exe
└── test-client
├── client.go
├── main.go
└── test-client.exe
配置好config.go的变量maskIpDef和etcdsDef之后你可以编译运行svc-hello和test-client进行测试。
iogoc可以调用protoc为协议文件proto创建pb.go文件(请先了解protobuf),并能使所有pb.go文件能在同一个目录下被编译,而不出现变量名fileDescriptor0 重名问题。
cd到proto文件所在目录,执行命令为当前所有proto文件创建pb.go文件(请先设置iogoc所在目录到系统的path环境变量中):
iogoc
cd到proto文件所在目录,执行命令为hello.proto文件创建pb.go文件:
iogoc -cpro hello.proto
执行iogoc命令后proto目录信息如下(以iogo-demo/proto为例):
proto
├── account.pb.go
├── account.proto
├── app.pb.go
├── app.proto
├── session.pb.go
└── session.proto
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!