netty學習1

一、IOjava

java 自帶IO流json

1)同步處理方式,一個請求佔用一個線程,高併發常見出現問題併發

二、java nio框架

實在jdk1.4版本上新添加的new IO / 非阻塞IO高併發

可多路併發性能

三、Netty封裝NIO開發google

netty可輕鬆開發高性能Client-server應用程序線程

四、netty粘包、拆包問題netty

數據傳輸過程當中使用的爲byte,會出現兩次數據內容在一塊兒(粘包)code

一次數據被解析成2個 (拆包)

本質是server、client解析數據內容時不知道數據內容的長短,出現數據缺失或者過多解析問題

解決方法:

1)、消息長度固定

2)使用回車換行符做爲消息結束符

3)經過其餘特殊字符做爲消息的結束標誌

4)經過在消息頭中國你定義長度字段來標示消息的總長度

五、netty自帶的分隔符/定長解碼器的應用

DelimiterBasedFrameDecoder 

FixedLengthFrameDecoder

六、編解碼技術

java自帶序列化缺點:一、沒法跨語言二、序列化後碼流偏大三、序列化性能過低業界主流的編解碼框架一、google的protobuf經過對比發現json性能僅次於protobuf二、facebook的Thrift三、JBoss marshalling四、MessagePack編解碼(傳輸對象)五、使用LengFieldPrependerLengthFieldBasedFrameDecoder解決粘包、拆包問題

相關文章
相關標籤/搜索