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

相关文章
相关标签/搜索