Thrift 的TNonblockingServer运行原理分析
2016-12-29 13:27
344 查看
整理下thrift TNonblockingServer的工作流程,简单记录下, 因为处理过程比较复杂不具体分析了,
TNonblockingServer的工作流程如下:
–1– server 创建 多个 iothread 和 工作线程池 workpool thread (给iothread发消息的方式主要通过管道的方式进行 )
–2– 传递listenfd 给 iothread 的 number 为0的线程,该线程监听listen socket的accept事件
–3– 当0号iothread 监听到accept事件时, 创建connection 并交给相应的iothread处理数据收发(通过管道方式通知相应的iothread)
–4– iothread收到新的connection 根据 connection的状态 进行数据收发等处理 ,该逻辑由conection的transition()
函数完成, 第一部肯定是请求报文的read操作
–5– 当connection的一个请求数据read完成时, 封装成任务task交由workpool thread 的线程池处理
–6– workpool thread 任务线程处理完成后会调用notifyIOThread通知connection对应的iothead来发送结果给客户端
–7– iothread将处理完成结果发送给客户端, 一个请求处理完成.
TNonblockingServer.py的设计思路跟CPP基本是一样的,可以参考着看看~~
TNonblockingServer的工作流程如下:
–1– server 创建 多个 iothread 和 工作线程池 workpool thread (给iothread发消息的方式主要通过管道的方式进行 )
–2– 传递listenfd 给 iothread 的 number 为0的线程,该线程监听listen socket的accept事件
–3– 当0号iothread 监听到accept事件时, 创建connection 并交给相应的iothread处理数据收发(通过管道方式通知相应的iothread)
–4– iothread收到新的connection 根据 connection的状态 进行数据收发等处理 ,该逻辑由conection的transition()
函数完成, 第一部肯定是请求报文的read操作
–5– 当connection的一个请求数据read完成时, 封装成任务task交由workpool thread 的线程池处理
–6– workpool thread 任务线程处理完成后会调用notifyIOThread通知connection对应的iothead来发送结果给客户端
–7– iothread将处理完成结果发送给客户端, 一个请求处理完成.
TNonblockingServer.py的设计思路跟CPP基本是一样的,可以参考着看看~~
相关文章推荐
- Thrift 的TNonblockingServer运行原理分析
- thrift(1):TNonblockingServer分析
- ArcGIS Server Ajax 框架分析及运行原理
- Thrift:TNonblockingServer的链接错误
- 将Hive Thrift server 添加到服务后台运行
- 在SQL-server2005中如何对运行慢的查询进行分析?
- ASP.NET 2.0运行原理及其过程简要分析
- ASP.NET 2.0运行原理及其过程简要分析
- uIP TCP Server 运行机制分析
- Thrift之TProtocol类体系原理及源码详细解析之类继承架构分析
- ASP.NET 2.0运行原理及其过程简要分析
- hadoop单线程实现server多socket连接读取数据原理分析
- BT运行原理分析及内网提速方法(转)
- Java 入门 一(java运行原理 与内存分析)
- Zigbee学习(二)之Zstack协议栈运行原理分析
- 谷歌纵横iPhone版后台运行更新纵横坐标实现原理分析
- win32API+C分析Windows消息运行原理
- Server.MapPath()在本地和服务器的运行情况分析
- 在SQL-server2005中如何对运行慢的查询进行分析?
- 将Hive Thrift server 添加到服务后台运行