Java 版本Thrift Server 分析
2014-02-24 17:56
435 查看
这次基于Thrift-0.9.1版本进行分析,不同版本可能实现有所差别。
这个版本的Thrift提供了5个不同模型的Server,这些Server具体怎么使用可参考这篇文章:Thrift入门及Java实例演示。
1 TSimpleServer
单线程阻塞模型,单线程(由main线程驱动)负责接受连接(阻塞),读取输入参数(阻塞),处理业务逻辑,写入输出结果(阻塞)。
2 TNonblockingServer
单线程非阻塞模型,单线程(由业务线程驱动)负责接受连接(非阻塞),读取输入参数(非阻塞),处理业务逻辑(单线程),写入输出结果(非阻塞)。
3 TThreadPoolServer
多线程阻塞模型,主线程(由main线程驱动)负责接受连接(阻塞),之后分派给子线程(业务线程)来读取输入参数(阻塞),处理业务逻辑,写入输出结果(阻塞)。
4 THsHaServer
多线程非阻塞模型,单线程(由main线程驱动)负责接受连接(非阻塞),读取输入参数(非阻塞),处理业务逻辑(多线程),写入输出结果(非阻塞)。
5 TThreadedSelectorServer
多线程非阻塞模型,单线程(由业务线程驱动)负责接受连接(非阻塞),多线程非阻塞的读取输入参数,多线程处理业务逻辑,多线程非阻塞的写入输出结果。
注1:按代码的说明来看,在多核情况下,5的性能最高,我没实测过,不确定是不是这样的,:-)。
注2:其中应用2,4,5的Server时,传输层必须选择TFramedTransport(包有长度信息,在非阻塞读取数据时,能保证接收数据的完整性),否则接受数据会出错.
这个版本的Thrift提供了5个不同模型的Server,这些Server具体怎么使用可参考这篇文章:Thrift入门及Java实例演示。
1 TSimpleServer
单线程阻塞模型,单线程(由main线程驱动)负责接受连接(阻塞),读取输入参数(阻塞),处理业务逻辑,写入输出结果(阻塞)。
2 TNonblockingServer
单线程非阻塞模型,单线程(由业务线程驱动)负责接受连接(非阻塞),读取输入参数(非阻塞),处理业务逻辑(单线程),写入输出结果(非阻塞)。
3 TThreadPoolServer
多线程阻塞模型,主线程(由main线程驱动)负责接受连接(阻塞),之后分派给子线程(业务线程)来读取输入参数(阻塞),处理业务逻辑,写入输出结果(阻塞)。
4 THsHaServer
多线程非阻塞模型,单线程(由main线程驱动)负责接受连接(非阻塞),读取输入参数(非阻塞),处理业务逻辑(多线程),写入输出结果(非阻塞)。
5 TThreadedSelectorServer
多线程非阻塞模型,单线程(由业务线程驱动)负责接受连接(非阻塞),多线程非阻塞的读取输入参数,多线程处理业务逻辑,多线程非阻塞的写入输出结果。
注1:按代码的说明来看,在多核情况下,5的性能最高,我没实测过,不确定是不是这样的,:-)。
注2:其中应用2,4,5的Server时,传输层必须选择TFramedTransport(包有长度信息,在非阻塞读取数据时,能保证接收数据的完整性),否则接受数据会出错.
相关文章推荐
- Java版本各种Thrift Server比较
- Thrift java server 模式分析
- hiveServer2 java thrift api
- Java ServerSocket用法深入分析
- (转)Java版的各种Thrift server实现的比较
- Java NIO框架Netty教程(四) – ServerBootStrap启动流程源码分析
- Openstack L版本的neutron server 启动流程分析(二)
- java thrift TSimpleServer TNonblockingServer THsHaServer TThreadedSelectorServer TThreadPoolServer比较
- Thrift 的TNonblockingServer运行原理分析
- 《Java 源码分析》:Java NIO 之 ServerSocketChannel
- (转)使用Java和R搭建统计分析server端
- Thrift 的TNonblockingServer运行原理分析
- Java版的各种Thrift server实现的比较
- Java NIO框架Netty教程(四) – ServerBootStrap启动流程源码分析
- Thrift java.net.SocketException: Broken pipe问题分析定位
- Java NIO框架Netty教程(四) – ServerBootStrap启动流程源码分析
- openstack L版本neutron server启动分析
- Java VisualVM(Java性能分析工具)插件安装及JDK版本对应插件中心地址
- Java NIO框架Netty教程(四) – ServerBootStrap启动流程源码分析
- spark core之java和scala版本——电影受众分析系统--得分最高的10部电影;看过电影最多的前10个人