内容简介:1、写 thrift 文件定义好 service :方法、入参出参2、生成 代码并发包3、编写 server 端实现
1、写 thrift 文件定义好 service :方法、入参出参
2、生成 代码并发包
3、编写 server 端实现
4、本地启动server端,进行测试
5、打包启动 rpc 服务
具体实现:
1、写 thrift 文件定义好 service 以及 入参出参的 struct
namespace 定义生成的文件目录和名称。
namespace py test_thrift.action_card
namespace go test_thrift.action_card
namespace java test_thrift.action_card
enum ResouceCode {
ALPHA = 1,
BETA = 2
}
序号:类型 名称
struct BannerParams {
1: i64 member_id;
2: i32 num;
}
service MemberService {
Banner get_banner(1: BannerParams params)
}
生成 py 或者 go 代码,并发布镜像
gen:
thrift -r --gen go:package_prefix=github.com/serenity/gen-go/ ./thrift_files/test/test.thrift
2、编写 server 端实现
package service
import (
"github.com/serenity/gen-go/test_thrift/member"
"github.com/serenity/golang/pkg/action_card/controller"
"github.com/serenity/golang/pkg/common/model"
)
func GetMemberServiceProcessor(msgChan chan model.Message) *member.MemberServiceProcessor {
// service - api
memberService := controller.NewMemberService()
// processor
return member.NewMemberServiceProcessor(memberService)
}
3、客户端调用测试
var memberClient = member_service.NewMemberServiceClient(tc.New("MemberService", tc.Timeout(500*time.Millisecond), tc.TargetName("member")))
params := memberClient.BannerParams{0,0}
banner := memberClient.GetBanner(params)
fmt.Println(banner)
4、打包启动 rpc 服务
servicesMap := map[string]thrift.TProcessor{
"MemberService": memberService.GetMemberServiceProcessor(),
}
server.New(
servicesMap,
server.SentryDSN(conf.EnvConfig.SentryDSN),
server.Tracing(conf.EnvConfig.ChoosedClusterAddrs),
server.Slowlog(500*time.Millisecond),
).Run("0.0.0.0:10000")
5、git 上线
以上所述就是小编给大家介绍的《RPC(一):thrift 框架 go语言开发》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- go语言学习爬虫框架总结
- 使用 Go 语言实现一个异步任务框架
- Go语言开发(十九)、GoConvey测试框架
- Go语言开发(二十)、GoStub测试框架
- Go语言web框架学习—Gin
- Go语言开发(二十一)、GoMock测试框架
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
构建高性能Web站点
郭欣 / 电子工业出版社 / 2012-6 / 75.00元
《构建高性能Web站点(修订版)》是畅销修订版,围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,几乎涵盖了Web站点性能优化的所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存、脚本解释速度、页面组件分离、浏览器本地缓存、浏览器并发请求、文件的分发、数据库I/O优化、数据库访问、数据库分布式......一起来看看 《构建高性能Web站点》 这本书的介绍吧!