Giter VIP home page Giter VIP logo

mfk's Introduction

蜜蜂控微服务脚手架说明文档

使用文档

1. 获取脚手架工具

    go get github.com/juelite/mfk

2. 编译脚手架工具并将其放入环境变量

    cd $GOAPTH/src/github.com/juelite/mfk
    
    go build -o $GOPATH/bin main.go

3. 创建服务目录及结构

    mfk new -n demo

创建成功后结构如下:

    .
    ├── README.md               说明文档
    ├── app                     服务目录(所有服务逻辑都在此编写)
    │   ├── client              测试客户端目录
    │   │   └── client.go       测试客户端
    │   ├── conf                配置文件目录
    │   │   ├── app.conf        项目配置文件
    │   │   └── env.conf        运行环境文件
    │   ├── main.go             业务入口
    │   ├── logic               业务逻辑
    │   ├── model               业务模型
    │   └── proto               protobuf文件及生成的pb文件
    │       ├── hello.proto     服务元信息文件
    │       └── protoc.sh       将服元原信息生成pb文件脚本
    ├── cmd                     终端辅助文件目录
    │   └── server.go           
    ├── main.go                 服务启动为恩建
    ├── server                  
    │   └── server.go           服务注册脚本
    └── util                    工具包
        └── config              配置文件解析包
            └── config.go       获取配置方法

4. 编写服务元信息文件 (app/proto):

示例:

    syntax = "proto3";
    
    package proto;
    
    import "google/api/annotations.proto";
    
    // 服务名称
    service HelloWorld {
        
        // 方法名称
        rpc SayHelloWorld(HelloWorldRequest) returns (HelloWorldResponse) {
            
            // 定义http访问路由和方法
            option (google.api.http) = {
                post: "/hello_world"
                body: "*"
            };
        }
    }
    
    // 请求参数定义
    message HelloWorldRequest {
        string referer = 1;
    }
    
    // 返回参数定义
    message HelloWorldResponse {
        string message = 1;
    }

编写完成后 执行 ./protoc.sh (脚本里面proto文件名需要与上面文件名一致)

会生成 .pb.go 和 .pb.gw.go 两个文件 分别文grpc和grpc-gateway文件

5. 编写业务入口文件(app/main.go)

    package app
    
    import (
    	pb "demo/app/proto"
    	"golang.org/x/net/context"
    )
    
    type helloSrv struct{}
    
    func NewHelloSrv() *helloSrv {
    	return &helloSrv{}
    }
    
    func (h helloSrv) SayHelloWorld(ctx context.Context, r *pb.HelloWorldRequest) (*pb.HelloWorldResponse, error) {
    	// TODO your logic
    	return &pb.HelloWorldResponse{
    		Message: "test",
    	}, nil
    }

6. 注册服务(server/server.go)

修改 【pb.*】方法为实际的接口方法

7. 运行服务

    // 不指定端口默认 grpc 50001 http 40001
    go run main.go server [-GrpcPort 50001] [-HttpPort 40001]  

mfk's People

Contributors

juelite avatar

Watchers

James Cloos avatar  avatar  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.