一、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解决粘包、拆包问题