Skip to content

leewckk/protoc-gen-gokit-micro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

protoc-gen-gokit-micro

简介

本项目是基于go-kit-micro-service所提供的基础封装库,而生成的go-kit框架中所需要的协议数据结构、endpoint入口函数以及gRPC + http(gin)的transport层代码。本插件支持基于服务端客户端代码的生成。

go-kit-micro-service参考模型

**go-kit-micro-service 参考模型**

服务端代码生成

  • endpoint层, 提供每项服务的入口,以及与服务之间交互所需要的业务数据结构;
  • transport层, 提供http 以及gRPC协议的协议转换以及路由注册相关入口实现;
  • swagger接口文档;
  • 基于protobuf生成的gRPC底层代码;
service git:(master) $ tree
.
├── auto-gen.sh
├── configure
│   └── configure.go
├── docker
│   └── consul-zipkin
│       ├── client.json
│       ├── docker-compose.yml
│       ├── README.md
│       └── server.json
├── endpoint			## 由 protoc-gen-gokit-micro生成
│   ├── calculate
│   │   └── calculate.go
│   └── version
│       └── version.go
├── go.mod
├── go.sum
├── main.go
├── Makefile
├── micro-service
├── pb					## 由 protoc-gen-gokit-micro生成
│   ├── calculate.proto
│   ├── golang
│   │   └── pkg
│   │       ├── calculate
│   │       │   └── calculate.pb.go
│   │       └── version
│   │           └── version.pb.go
│   ├── google
│   │   ├── api
│   │   │   ├── annotations.proto
│   │   │   └── http.proto
│   │   └── protobuf
│   │       ├── any.proto
│   │       ├── api.proto
│   │       ├── compiler
│   │       │   └── plugin.proto
│   │       ├── descriptor.proto
│   │       ├── duration.proto
│   │       ├── empty.proto
│   │       ├── field_mask.proto
│   │       ├── source_context.proto
│   │       ├── struct.proto
│   │       ├── timestamp.proto
│   │       ├── type.proto
│   │       └── wrappers.proto
│   └── version.proto
├── server
│   ├── grpc
│   │   └── server.go
│   └── http
│       └── server.go
├── service
│   ├── calculate.go
│   └── version.go
├── swagger				## 由 protoc-gen-gokit-micro生成
│   ├── calculate.swagger.json
│   └── version.swagger.json
├── transport			## 由 protoc-gen-gokit-micro生成
│   ├── gin
│   │   ├── calculate
│   │   │   ├── calculate.calculate.go
│   │   │   └── calculate.messaging.go
│   │   └── version
│   │       └── version.versionservice.go
│   └── grpc
│       ├── calculate
│       │   ├── calculate.calculate.go
│       │   └── calculate.messaging.go
│       └── version
│           └── version.versionservice.go
├── version
│   └── version.go
└── version.go

客户端代码生成

  • protocol定义,提供与服务端交互所需要的业务层数据结构定义;
  • endpoint,按照gRPC以及HTTP协议接入点,分别封装了各服务各函数入口,以及协议转码相关业务代码;
client git:(master) $ tree
.
├── auto-gen.sh
├── go.mod
├── go.sum
├── grpc.go
├── http.go
├── invoker			## 由 protoc-gen-gokit-micro生成
│   ├── grpc
│   │   ├── calculate
│   │   │   └── calculate.go
│   │   └── version
│   │       └── version.go
│   ├── http
│   │   ├── calculate
│   │   │   └── calculate.go
│   │   └── version
│   │       └── version.go
│   └── protocol
│       ├── calculate
│       │   └── calculate.go
│       └── version
│           └── version.go
├── main.go
├── Makefile
├── micro-client
├── pb				## 由 protoc-gen-gokit-micro生成
│   ├── calculate.proto
│   ├── golang
│   │   └── pkg
│   │       ├── calculate
│   │       │   └── calculate.pb.go
│   │       └── version
│   │           └── version.pb.go
│   ├── google
│   │   ├── api
│   │   │   ├── annotations.proto
│   │   │   └── http.proto
│   │   └── protobuf
│   │       ├── any.proto
│   │       ├── api.proto
│   │       ├── compiler
│   │       │   └── plugin.proto
│   │       ├── descriptor.proto
│   │       ├── duration.proto
│   │       ├── empty.proto
│   │       ├── field_mask.proto
│   │       ├── source_context.proto
│   │       ├── struct.proto
│   │       ├── timestamp.proto
│   │       ├── type.proto
│   │       └── wrappers.proto
│   └── version.proto
├── swagger		## 由 protoc-gen-gokit-micro生成
│   ├── calculate.swagger.json
│   └── version.swagger.json
└── version.go

快速开始

服务端

客户端

About

proto plugin for go-kit

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published