关于 jetty 和 thrift 一起使用时,到底会怎样使用nio?

发布于 2022-09-12 02:50:13 字数 676 浏览 27 评论 0

我的服务使用 spring 作为框架开发,然后部署在 jetty 上运行的,我知道 jetty 内部使用 nio 处理请求,但是我的服务除了支持 http,还支持很多 thrift 接口,thrift 服务自己也有 nio 的处理方式,这些综合起来我有些混乱了,想请教下我理解的这些关于 io 处理的内容是否正确。

  1. 我的服务器在接收 http 请求的时候,使用 jetty 的 nio 来处理链接请求( jetty 的默认处理模型,tomcat 现在也是这样的)。
  2. 我的服务器在发送 http 请求的时候,主要看我使用了什么 http 客户端,如果我使用了普通的 http 客户端就是普通 Bio 的,如果使用了类似 netty 的框架来调用,则就是用 netty 的 nio 实现的处理请求链接,与 jetty 无关.
  3. 如果我的服务作为服务端接收 thrift 请求的时候,就看我的 Thrift Servcive 实现是阻塞的多线程服务模型(TThreadPoolServer),还是非阻塞式服务器(TNonBlockingServer),与 jetty 无关。
  4. 如果我的服务作为客户端发送 thrift 请求的时候,就看我的 thrift 客户端是阻塞式的还是非阻塞实现,与 jetty 无关。

还有理论上我可以仅用 thrift 来进行序列化和反序列化,但是 tcp 通信层完全使用 netty 来完成 IO 的交互?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一桥轻雨一伞开 2022-09-19 02:50:13

关于 jetty 和 thrift 一起使用时,到底会怎样使用nio?

这两个工作在不同的端口,并没有什么关系。

TCP/IP

服务器 server 与 客户端 client 通讯是通过 TCP/IP 协议,即 IP,PORT, 端口。
比如你启动了 8080端口的 Spring boot,然后firefox 访问首页,则可以尝试 netstat -tnap | grep 8000 查看 8000 端口的连接情况。

➜  ~ netstat -tulnap | grep 8000 
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::8000                 :::*                    LISTEN      21297/java          
tcp6       0      0 ::1:8000                ::1:46366               ESTABLISHED 21297/java                 
tcp6       0      0 ::1:46366               ::1:8000                ESTABLISHED 12125/firefox       
  • 第一条表明 java 进程21297监听了 8080端口。

可以进一步 ps -q 21297 -efa > /tmp/a && cat /tmp/a 查看实际运行的程序,比如;
image.png
你可以看到是我的 Spring boot

  • 第二条表示 Spring boot 服务器 与 浏览器 firefox 建立的 连接。
  • 第三条表示 浏览器 firefox 与Spring boot 服务器 建立的 连接。

补充

  • nio,一般指服务器 server 采用的IO模型是多路复用IO模型,跟客户端 client没有关系。
  • netty, jetty 都是 应用服务器。

    • 不同的是 jetty 接受的是 HTTP 协议的请求,服务于指定的端口,是 HTTP 应用服务器。
    • 而 netty 接受的是 TCP 协议的请求,服务于指定的端口,是 TCP 应用服务器。
  • thrift 是 rpc 框架,同时也是 TCP 应用服务器。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文