一、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解決粘包、拆包問題