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