一个人写一个集群:基于GRPC的golang微服务框架iogo(grpc/protobuf/etcd/freetoo/码客 卢益贵广西·南宁) - Go语言中文社区

一个人写一个集群:基于GRPC的golang微服务框架iogo(grpc/protobuf/etcd/freetoo/码客 卢益贵广西·南宁)


一个人写一个集群:基于GRPC的golang微服务框架iogo

keyword:iogo,golang,grpc,protobuf,etcd,zookeeper,microservice,distributed lock,service discovery,cluster,load balancing,微服务,分布式锁,服务发现,负载均衡

1 iogo的初衷

iogo微服务框架是对高效的远程访问组件grpc(支持多平台多语言,使用protobuf进行二进制数据序列化)进行更加易用性的封装,减少开发人员在底层通信方面的开发工作,将精力集中放在应用逻辑的开发上面,并且可以轻而易举的进行服务器集群的动态伸缩操作。借助命令行工具iogoc,可以快速创建微服务集群的工程模板。“一个人写一个集群”是iogo的初衷,对于大型的应用场景来说未免是大话了,但对于中小型的应用场景来说未免不可,尤其更加方便于小型的开发团队。

2 iogo的架构

iogo仅仅是对grpc进行了易用性的封装,并有效保留grpc的接口以便于代码的移植。同时iogo封装了分布式锁,便于并发操作时的一致性操作。iogo的思想是每个微服务都有一个server端提供method服务,都有一个client端进行微服务之间的访问。

3 iogo-demo的框架

iogo-demo是基于iogo微服务框架的基础上提供的微服务集群开发模板示例,以演示iogo所能担负的集群开发任务。test-client利用了服务发现和内部负载均衡来担任实际场景中的反向代理和微服务网关,所有iogo-demo可以轻装进行测试。

4 iogo部署

先决条件:已经安装配置golang和IDE。

4.1 基础组件部署

4.1.1 安装golang基础组件(grpc/protobu/etcd)

下载grpc、protobu、etcd的golang组件包,并解压到$gopath/src/目录下:https://download.csdn.net/download/guestcode/10939819

4.1.2 windows下安装protobuf工具protoc

下载protobuf的工具protoc,解压后将bin目录设置到系统的path环境变量中:https://download.csdn.net/download/guestcode/10939277

其它安装可以参考:

linux:从零开始搭建 gRPC 服务 - Golang 篇(一)

windows:grpc-golang在win7/8/10下的安装配置

4.2 iogo框架核心的部署

最新版本可以从一下获得:

iogo(iogoc):https://github.com/freetoo/iogo

iogo-demo:https://github.com/freetoo/iogo-demo

请下载或克隆到$gopath/src/目录下,要使用iogoc工具的请把目录xxx/iogo/iogoc/设置到系统的path环境变量中

5 使用说明

5.1 iogo框架开发使用说明

除NewConnectByAddr和服务发现的IsInline函数之外,其它的操作应在Start之前。

其它iogo框架的使用方法参阅iogo-demo或者iogoc工具创建的示例源码。

5.2 iogoc命令行工具使用说明

5.2.1 创建集群项目命令

创建集群项目模板(创建集群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进行测试。

5.2.2 用iogoc创建protobuf的pb.go源码文件

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

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/guestcode/article/details/86655540
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-26 23:53:02
  • 阅读 ( 3126 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢