最近梳理公司的服务时,决定把基础组件抽离出来服务化。因为公司里有多种语言开发的服务,决定使用thrift来解决跨语言通讯。
启动一个server
thrift对golang的支持已经很好了,官方包里提供了一个server基类和一个简单服务simple_server.go.自己可以实现server来做鉴权和其它统计操作.
server定义了一个TServer接口和一些方法,源码如下:
type TServer interface {
ProcessorFactory() TProcessorFactory //服务
ServerTransport() TServerTransport //连接
InputTransportFactory() TTransportFactory //输入
OutputTransportFactory() TTransportFactory //输出
InputProtocolFactory() TProtocolFactory //协议
OutputProtocolFactory() TProtocolFactory //协议
// Starts the server
Serve() error
// Stops the server. This is optional on a per-implementation basis. Not
// all servers are required to be cleanly stoppable.
Stop() error
}
Server方法进行监听,接受请求,调度处理.下面是simple_server.go的Server方法.
func (p *TSimpleServer) Serve() error {
err := p.Listen()
if err != nil {
return err
}
p.AcceptLoop()
return nil
}
func (p *TSimpleServer) AcceptLoop() error {
for {
client, err := p.serverTransport.Accept()
if err != nil {
select {
case <-p.quit:
return nil
default:
}
return err
}
if client != nil {
go func() {
if err := p.processRequests(client); err != nil {
log.Println("error processing request:", err)
}
}()
}
}
}
只要自己实现相关接口方法,在方法中就可以进行相关鉴权/统计等处理了。
关于多路复用idl写法的问题
golang的多路复用是要把service写在一个idl文件里的,而java就不需要。这个在刚开始的时候耽误了点时间。
暗影猎手失落的世界 最新版本v30.118.6.0
下载格里姆瓦勒完全版 安卓版v1.2.0
下载忍者武士暗影格斗无限金币版 安卓版v1.82.1
下载忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载创造与魔法免登录版 手机版v1.0.0760
创造与魔法是一款高度自由的沙盒冒险手游,该游戏采用了3D最新
创造与魔法gm版 安卓版v1.0.0760
创造与魔法是一款有英雄互娱运营的一款经营沙盒建造手游,该游戏
创造与魔法变态无敌版 v1.0.0760
创造与魔法是一款3DQ版的沙盒模拟建造手游,在这里玩家需要适
腾讯普通话小镇游戏 安卓版v2.2.5
普通话小镇是由腾讯游戏追梦计划推出发行的模拟经营类型普通学习
海岛村 最新版v1.0
海岛村是一款非常好玩的模拟经营类手游,玩家在游戏中将会有一个