关于 jetty 和 thrift 一起使用时,到底会怎样使用nio?
我的服务使用 spring 作为框架开发,然后部署在 jetty 上运行的,我知道 jetty 内部使用 nio 处理请求,但是我的服务除了支持 http,还支持很多 thrift 接口,thrift 服务自己也有 nio 的处理方式,这些综合起来我有些混乱了,想请教下我理解的这些关于 io 处理的内容是否正确。
- 我的服务器在接收 http 请求的时候,使用 jetty 的 nio 来处理链接请求( jetty 的默认处理模型,tomcat 现在也是这样的)。
- 我的服务器在发送 http 请求的时候,主要看我使用了什么 http 客户端,如果我使用了普通的 http 客户端就是普通 Bio 的,如果使用了类似 netty 的框架来调用,则就是用 netty 的 nio 实现的处理请求链接,与 jetty 无关.
- 如果我的服务作为服务端接收 thrift 请求的时候,就看我的 Thrift Servcive 实现是阻塞的多线程服务模型(TThreadPoolServer),还是非阻塞式服务器(TNonBlockingServer),与 jetty 无关。
- 如果我的服务作为客户端发送 thrift 请求的时候,就看我的 thrift 客户端是阻塞式的还是非阻塞实现,与 jetty 无关。
还有理论上我可以仅用 thrift 来进行序列化和反序列化,但是 tcp 通信层完全使用 netty 来完成 IO 的交互?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
关于 jetty 和 thrift 一起使用时,到底会怎样使用nio?
这两个工作在不同的端口,并没有什么关系。
TCP/IP
服务器
server
与 客户端client
通讯是通过TCP/IP
协议,即 IP,PORT, 端口。比如你启动了 8080端口的 Spring boot,然后firefox 访问首页,则可以尝试
netstat -tnap | grep 8000
查看 8000 端口的连接情况。21297
监听了 8080端口。可以进一步
ps -q 21297 -efa > /tmp/a && cat /tmp/a
查看实际运行的程序,比如;你可以看到是我的
Spring boot
。Spring boot
服务器 与 浏览器 firefox 建立的 连接。Spring boot
服务器 建立的 连接。补充
nio
,一般指服务器server
采用的IO模型是多路复用IO模型,跟客户端client
没有关系。netty, jetty 都是 应用服务器。