Giter Site home page Giter Site logo

truss's Introduction

介绍

基于metaverse/truss修改,truss是go-kit的一款代码生成脚手架,可以快速生成go-kit的endpoint和transport层代码,免去开发人员编写encode和decode方法工作,极大的提升了工作效率.目前只transport层只支持grpc和http协议(如果你的项目使用的是thrift,它可能有点不和适)

安装方式

使用gomod方式构建

// 关闭gomod
export GO111MODULE=off
// 下载源码到gopath的src目录下
go get github.com/jjggzz/truss
// 进入项目目录
cd $GOPATH/src/github.com/jjggzz/truss
// 开启gomod
export GO111MODULE=on
// 下载依赖 (windows直接执行wininstall.bat即可)
make dependencies
// 构建(若提示running "go-bindata": exec: "go-bindata": executable file not found in $PATH,请将$GOPATH/bin配置到环境变量)
make

使用方式

编辑proto文件 test.proto

syntax = "proto3";

package proto;

service Test {
  rpc Show (Empty) returns (Empty) {}

}

message Empty {

}

执行命令

// --svcout ./  生成项目在当前文件夹下
// --pbpkg proto pb文件放在项目的proto文件夹下
truss test.proto --svcout ./  --pbpkg proto

生成结构

.
├── test-service
|   ├── cmd 
|   │   └── test
|   │       └── main.go
|   ├── proto (通过pbpkg参数生成,若不指定,pb文件生成在test-service下)
|   |   └── echo.pb.go
|   ├── handlers (重复执行生成命令不会修改此文件夹下文件的内容)
|   │   ├── handlers.go (在这里调用自己写的业务逻辑)
|   │   ├── hooks.go (启动时的钩子函数,监听停止)
|   │   └── middlewares.go (服务运行的中间件,可以在这里为端点集成熔断\限流\链路追踪\调用统计等等中间件,go-kit提供了相应的工具包)
|   └── svc (重复执行生成命令会重新生成此文件夹下的内容.若此文件夹下有自己创建的文件,那些文件不会被修改)
|       └── ...
└── test.proto

更详细的使用方法

https://github.com/metaverse/truss

未来的工作

(完成)支持生成负载均衡的调用客户端(现在的客户端代码只支持单点调用)
支持生成服务注册代码(现在需要手动编写)
优化服务端和客户端的结构(使生成的代码符合洋葱模型,暂时打算使用middleware中间件实现限流、熔断、链路追踪、错误日志打印等等非业务的东西)

truss's People

Contributors

jjggzz avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.