美文网首页
3.Thrift指南 实战go服务端

3.Thrift指南 实战go服务端

作者: parker7 | 来源:发表于2018-09-21 10:10 被阅读0次

    前言:上一遍通过thrift工具服务接口,这里采用go实现服务端

    1.准备工作,安装go thrift包
    2.开发服务端代码

    1.准备工作,安装go thrift包

    我们实现一个thrift服务端需要依赖thrift包公共方法

    go get git.apache.org/thrift.git/lib/go/thrift
    

    ⚠️ 这里使用thrift(0.11.0)开发, 所以这个go包也必须是这个版本 github 全版本

    2.开发服务端代码

    2.1 根据服务,查看需要实现接口(我这里只需要实现两个方法)


    2.2 实现服务接口(go语言隐式实现👍)
    这里定义一个用户服务,实现这两个方法即实现这个接口

    package main
    
    import (
        "user/thrift/user"
        "git.apache.org/thrift.git/lib/go/thrift"
        "context"
        "fmt"
    )
    // 用户服务
    type UserService struct {
    }
    // 实际获取用户业务
    func (u *UserService) GetUser(ctx context.Context, id int32) (r *user.UserInfo, err error) {
        fmt.Printf("user id %d\n", id)
        return &user.UserInfo{
            ID: id,
        }, nil
    }
    // 实际获取用户名业务
    func (u *UserService) GetName(ctx context.Context) (r string, err error) {
        return "go server", nil
    }
    
    func main() {
        // 服务处理(实际业务实现如上面)
        handler := &UserService{}
        processor := user.NewUserProcessor(handler)
    
        // 网络传输方式(客户端与服务端需一致)
        transport, err := thrift.NewTServerSocket("localhost:9000")
        if err != nil {
            fmt.Printf("thrift NewTServerSocket error, %s\n", err)
            return
        }
    
        // 服务模型(采用TBinaryProtocol传输格式,客户端与服务端需一致)
        server := thrift.NewTSimpleServer2(processor, transport)
    
        fmt.Printf("server run ...\n")
        server.Serve()
    }
    

    总结

    第一步实现需要定义的服务接口,第二步启动一个thrift server。服务端至此开发完毕

    Github Thrift Demo
    thrift官网go教程

    相关文章

      网友评论

          本文标题:3.Thrift指南 实战go服务端

          本文链接:https://www.haomeiwen.com/subject/aafnnftx.html