当前位置: 首页 > wzjs >正文

广州网站建设seo东莞营销型网站建设找火速

广州网站建设seo,东莞营销型网站建设找火速,文化网站策划,wordpress 身份认证文章目录 netty 通信框架性能怪兽一、什么是拆包 粘包?二、拆包 粘包的弊端三、netty的解决方案总结 netty 通信框架性能怪兽 当你了: 解了阻塞模型 非阻塞模型 react模型 知道这些原理之后,你不得不惊叹于netty的设计 selector 多路复用: 单线程可以配合 Select…

文章目录

  • netty 通信框架性能怪兽
  • 一、什么是拆包 粘包?
  • 二、拆包 粘包的弊端
  • 三、netty的解决方案
  • 总结


netty 通信框架性能怪兽

当你了:

  1. 解了阻塞模型

  2. 非阻塞模型

  3. react模型
    知道这些原理之后,你不得不惊叹于netty的设计

    selector 多路复用: 单线程可以配合 Selector 完成对多个 Channel 可读写事件的监控,这称之为多路复用;
    0拷贝:splice函数的作用是将两个文件描述符之间建立一个管道,然后将文件描述符的引用传递过去,这样在使用到数据的时候就可以直接通过引用指针访问到具体数据,之前是拷贝数据,现在变为了传递映射指针,然后直接访问到数据;
    缓冲区 :我认为缓冲区是netty提升性能的基础,有了缓冲区,才能实现多路复用,缓冲区相当于是netty传递消息的载体,贯穿整个netty;

随便拿出来一个都能吊打各路高手,netty集万千高级思想于一身


一、什么是拆包 粘包?

这要从TCP协议,缓冲区说起了;

  • 发送方发送的消息较大,在传输之前会被 TCP 底层拆分,这个过程称为拆包;
  • 接收方接受消息的时候, 会将多个小的消息变为一个包,这个合并的过程称为粘包;
  • 当然可能同时存在拆包和粘包,例如接受到的消息为两部分组成(A B), 一部分是一个A的全部,另一个部分为B的一部分,这就是既有拆包又有粘包;

这里面 缓冲区就是在传输过程中的一个缓冲的地方,他如果很大, 他就会讲小的消息体整合发送,他如果很小,就会将一个完整的消息体拆分下,然后发送;

二、拆包 粘包的弊端

会导致消息解析出现问题, 因为可能接受的消息不完整,也可能接受的消息是两部分,导致接受到后无法正确解析语义;

三、netty的解决方案

  1. LineBasedFrameDecoder 行拆包 以换行符作为分隔符
  2. DelimiterBasedFrameDecoder 指定分隔符 以自定义的分隔符作为 消息结束标志
  3. LengthFieldBasedFrameDecoder 基于数据包长度的拆包 将应用层数据包的长度固定
  4. MessageToByteEncoder和 ByteToMessageDecoder 自定义粘包拆包器

比较常见的就是DelimiterBasedFrameDecoder 用此种方式实现

用自定义分隔符作为一个消息的结束,解析即可

bootstrap.group(parentGroup, childGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 1024)//接收套接字缓冲区大小.option(ChannelOption.SO_RCVBUF, 1024 * 1024)//发送套接字缓冲区大小.option(ChannelOption.SO_SNDBUF, 1024 * 1024).option(ChannelOption.SO_KEEPALIVE, true).option(ChannelOption.TCP_NODELAY, true).handler(new LoggingHandler(LogLevel.INFO)).childHandler(new ChannelInitializer<SocketChannel>() {@Overrideprotected void initChannel(SocketChannel ch) throws Exception {ChannelPipeline pipeline = ch.pipeline();// 这里将FixedLengthFrameDecoder添加到pipeline中,指定长度为100// pipeline.addLast(new FixedLengthFrameDecoder(100));//这里将LineBasedFrameDecoder添加到pipeline中,设置最大长度为1024// pipeline.addLast(new LineBasedFrameDecoder(1024));//被按照$_$进行分隔,这里1024指的是分隔的最大长度,即当读取到1024个字节的数据之后,// 若还是未读取到分隔符,则舍弃当前数据段,因为其很有可能是由于码流紊乱造成的ByteBuf delimiter = copiedBuffer(Constants.MESSAGE_DELIMITER.getBytes(Charset.forName("UTF-8")));ch.pipeline().addLast(new DelimiterBasedFrameDecoder(1024, delimiter));// StringEncoder:字符串编码器,将String编码为将要发送到Channel中的ByteBufpipeline.addLast(new StringEncoder(Charset.forName("UTF-8")));// StringDecoder:字符串解码器,将Channel中的ByteBuf数据解码为Stringpipeline.addLast(new StringDecoder(Charset.forName("UTF-8")));//绑定处理器(可绑定多个)pipeline.addLast(new ServerHandler()); //处理业务}});

作为解析方,只需要根据分隔符作为消息分割即可,然后就能正确解析消息了;


总结

netty真的是网络通讯中的王者,很多优秀的RPC框架,通讯等,底层都是采用netty作为通讯手段,之后还会写几篇netty的文章;


文章转载自:

http://VUAmf3OT.gchqy.cn
http://dVuAXBoa.gchqy.cn
http://jtaDseZZ.gchqy.cn
http://NfQwBe9T.gchqy.cn
http://jZYHJqB8.gchqy.cn
http://sgFt5WZE.gchqy.cn
http://iVjFf70h.gchqy.cn
http://ps9zzVBM.gchqy.cn
http://SwLX6z8v.gchqy.cn
http://gOdjrMTM.gchqy.cn
http://kmXvENN0.gchqy.cn
http://x3fDZIgF.gchqy.cn
http://TmD2VuZT.gchqy.cn
http://pzXqSLMc.gchqy.cn
http://CR8eUy4C.gchqy.cn
http://3F43ZfjH.gchqy.cn
http://g2bvDlm0.gchqy.cn
http://PzMEtNhg.gchqy.cn
http://DoQZlRYS.gchqy.cn
http://btxnIDoT.gchqy.cn
http://uDCeJtb8.gchqy.cn
http://1CSSD6A9.gchqy.cn
http://Q3TPae1r.gchqy.cn
http://rwUelfBy.gchqy.cn
http://ICYVJ7yX.gchqy.cn
http://2L8b0Q8u.gchqy.cn
http://G6FYkstu.gchqy.cn
http://edTevRY2.gchqy.cn
http://ibHypJaK.gchqy.cn
http://c54hUhwy.gchqy.cn
http://www.dtcms.com/wzjs/766466.html

相关文章:

  • 东莞营销网站建设公司wordpress 下载的主题插件在俺儿
  • 盗版视频网站建设费用职业生涯规划大赛规划书
  • 微信网站怎么做的好社区网站 租用服务器还是只需要购买空间
  • 石景山网站建设制作公司阿里OSS做网站图库费用
  • 福清市建设工程交易网站好像黑龙江农垦建设局网站
  • 景点介绍网站模板聊天软件开发公司
  • 用第三方做网站wordpress免费中文模板
  • 宝安网站建设推广找工作室的网站
  • 搜索栏搜索网站?热?文威海网站制作服务
  • 网站推广计划机构教育培训机构十大排名
  • 运营个网站需要什么条件郑州网站推广策划
  • 网站设计者wordpress代码优化插件
  • 网页制作与网站建设从入门到精通 下载西安专业网站建设价格
  • 设计师 必备的网站国内跨境电商建站系统
  • 郴州做网站的网页源码在线提取
  • 东莞网站优化电话做课件的网站
  • 网站开发提案模板个体户营业执照查询网上查询
  • 有个人免费网站吗wordpress 文章 列表
  • 西安东郊网站建设公司什么是企业年金
  • 做标志的网站网站本地被劫要怎么做
  • shopify建站公司北京十佳网站建设
  • 怎么建设淘宝网站老外做牛排的视频网站
  • 深圳网站建设制作哪家口碑好东莞建筑公司排名
  • 网站开发文档范文余姚专业网站建设公司
  • 网站制作中英文天津网站播放器源码
  • 网站首页加载特效wdcp新建网站
  • 如何做网站的维护源码商城源码
  • 无极网页游戏移动端seo
  • 宁波俄语网站建设环保网站建设模板免费下载
  • 2015做那些网站能致富唐山移动互联网开发