HTTPCLIENT请求基于NETTY的HTTP服务器,NETTY生成相关的HTTPREQUEST、HTTPRESPONSE,调用SPRING 的DISPATCHSERVLET.SERVICE,将HTTPRESPONSE生成二进制字节,返回HTTPCLIENT。DISPATCHSERVLET同时会调用SPRING的CONTROLLER干活,即以前的SPRING MVC那套可以保留。
缺点:
nginx+tomcat与netty优缺点
http://www.oschina.net/question/1765708_158026我的架构最开始是 nginx +
[netty (tcp) ] 用nginx做负载均衡。后来分布式接口变成了http restful -> nginx +
[netty(http) ]于是参考了netty的官方http例子,开始移植代码,其实移植量不大,只需要把原来的tpc handler里面的逻辑放到http handler里面就可以了。本以为ok了,测试才发现了大量的问题,其实问题本身是由于对http基础掌握的还不够透彻,比如keep-alive属性,这个平时基本不用的东西,当你要自己开发http server时,变的很有用,你不能每次都close channel.你要化很多时间了解header里面每个字段的意思,然后去实现它。再比如一个post请求,你要自己写代码从body里面读数据,解码等。
最终我放弃了netty,回到了tomcat.应为tomcat把http的一切都帮你搞定了。
最终的架构是 nginx +
[tomcat(http) ]tomcat就是针对http层的,所以我建议http还是选择tomcat(或者其他成熟的http-server),并不是说netty不好,而是你的选择问题,netty是一个网络组件,tcp,udp,http都可以弄,但是官方文档都是些hello wolrd级别的。如果你非常了解http结构,完全可以基于netty搞出一个比tomcat牛的http server.
如果做tcp开发,netty不二之选!
dubboss是一个分布式REST服务的框架,实现了如下功能:
- 基于dubbo的RPC
- 基于netty的应用服务器
- 基于springmvc的REST调用
- 基于ngnix的负载均衡
https://github.com/leiguorui/dubboss