3.Thrift指南 实战go服务端


前言:上一遍通过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教程

推荐阅读更多精彩内容