最近在研究http異步客戶端。?
看到了一堆名詞,servlet3.0,jetty,tomcat,HttpAsyncClient?
netty,mina?
nio,nio2.0,iocp等等。略混亂?
??
我的問題就是:netty跟tomcat是同樣的概念么? netty官方說是個框架,那他是否還需要web容器支持?如果我客戶端使用netty,服務端使用tomcat也是能連上的吧?是不是可以用netty的客戶端和服務端 直接替換掉HttpAsyncClient和tomcat??
???
自己整理的思路是:?
1. 就IO而言:概念上有5中模型:blocking I/O,nonblocking I/O,I/O multiplexing (select and poll),signal driven I/O (SIGIO),asynchronous I/O (the POSIX aio_functions)。?
2. 然后呢 不同的操作系統對上述模型支持不同: unix支持io多路復用,不同系統叫法不同 :freebsd里面叫 kqueue;linux 是epoll。而windows: 2000的時候就誕生了IOCP支持最后一種異步I/O?
3. java是一種跨平臺語言,為了支持異步IO,誕生了nio,Java1.4引入的NIO 1.0是基于I/O復用的。在各個平臺上會選擇不同的復用方式。Linux用的epoll,BSD上用kqueue,Windows上應該是重疊I/O(肯定不是IOCP)。?
??
NIO 2.0里終于有AIO了,Linux上用AIO,Windows上用IOCP,都支持了概念上的最后一種IOasynchronous I/O??
??
4. 然后基于jdk的nio ,不同公司出了一堆框架:apache mina ,jboss的netty,sun的grizzly。?
這些都是直接封裝傳輸層的tcp/udp。然后servlet3.0是基于傳輸層的,針對于http的。?
tomcat和jetty都是web容器,對servlet3.0的api提供了不同的實現(實際也都是基于nio?)?
HttpAsyncClient這個就是異步的http客戶端(實際上也是基于java nio)?
??
我的問題就是:netty跟tomcat是同樣的概念么? netty官方說是個框架,那他是否還需要web容器支持?如果我客戶端使用netty,服務端使用tomcat也是能連上的吧?是不是可以用netty的客戶端和服務端 直接替換掉HttpAsyncClient和tomcat?另外上述陳述部分有問題的請指出~?
??
問題略長..問題前后提了兩遍=。= 謝謝各位了~
來自 <http://www.iteye.com/problems/92400>
#### A1
> 1. 1,2,3全中.?
> 但是nio直接使用比較難用,所以有了mina,netty這些針對網絡io部分(tcp/udp-傳輸層)的封裝(nio也有非網絡io部分),為了使nio更易用。?
> http是應用層的協議。?
> servlet3.0則是另外一種東西,不是對協議的封裝,javaee6眾多規范中的一個,但凡javaee6的實現(或者像tomcat這種web容器部分的實現),都會支持servlet3.0,servlet理論上可以支持多種應用層協議(不單單只是http),而servlet3.0以后提供的異步特性與javase提供的nio或aio無直接關系,就是使用bio一樣可以實現servlet3.0中提供的異步特性。?
> 異步只是一種概念,異步與否要看,上層使用的異步,而支持的下層完全可能是阻塞的。?
> 2. netty跟tomcat是同樣的概念么??
> 不是?
> 3. netty官方說是個框架,那他是否還需要web容器支持??
> 不需要?
> 4. 如果我客戶端使用netty,服務端使用tomcat也是能連上的吧??
> 可以,比如客戶端直接使用netty構造http協議與tomcat支持的servlet通信?
> 是不是可以用netty 的客戶端和服務端 直接替換掉HttpAsyncClient和tomcat??
> 不是很明白你的意思...netty的客戶端和服務端、HttpAsyncClient、tomcat...三者之間似乎不存在關系...看你的通訊協議了?
> 來自 <http://www.iteye.com/problems/92400>
#### A2
> 感覺是樓主搞混了netty和jetty。?
> jetty是容器,和tomcat是同樣的概念,但是具體實現不同。?
> netty是socket框架,和MINA是同樣的概念,但是具體實現不同。
> 來自 <http://www.iteye.com/problems/92400>
#### A3
> netty和mina屬于NIO封裝框架。Tomcat使用了相關的技術,但屬于servlet容器。
> 來自 <http://www.iteye.com/problems/92400>
- 誰能舉個通俗易懂的例子告訴我IAAS,SAAS,PAAS的區別?
- 服務器與容器
- 常見NIO框架
- Nginx/Apache 和Apache Tomcat 的區別
- tomcat結合nginx使用小結
- java nio框架netty 與tomcat的關系
- Nginx、Lighttpd與Apache的區別
- Apache vs Lighttpd vs Nginx對比
- 數據庫
- mybatis
- MyBatis傳入多個參數的問題
- MS
- JMS(Java消息服務)入門教程
- ActiveMQ
- JMS簡介與ActiveMQ實戰
- JMS-使用消息隊列優化網站性能
- 深入淺出JMS(一)--JMS基本概念
- 深入淺出JMS(二)--ActiveMQ簡單介紹以及安裝
- 深入淺出JMS(三)--ActiveMQ簡單的HelloWorld實例
- RabbitMq、ActiveMq、ZeroMq、kafka之間的比較,資料匯總
- kafka
- zookeeper
- 集群與負載
- 單機到分布式集群
- 日志
- 從Log4j遷移到LogBack的理由
- 角色權限
- shiro
- Shiro的認證和權限控制
- Spring 整合 Apache Shiro 實現各等級的權限管理
- 安全
- basic
- Servlet、Filter、Listener深入理解
- filter與servlet的比較
- Servlet Filter