netty使用从0到1

 本周强总在组内做了netty分享,内容相当不错,趁着这次分享记录的,以及以前研究,进行一下记录。

       java io形式存在三种,一种是BIO传统IO是阻塞IO,面向字符、字节服务都属于这一种。NIO官方意思是新

IO框架,相比原有java io框架,大家更倾向于把NIO理解为无阻塞IO,性能有着极大优势,但编程比原有jdk io框

架复杂不止一个数量级,幸运的事业界有了及其成熟nio框架netty。再有就是AIO无阻塞异步IO,netty2.0实现包

含异步IO实现。

       netty是网络通信框架,有及其高效网络通信效率,相比jdk原生NIO复杂,对于实现高性能网络编程实现有着

很好易用性。

      netty脱胎JBoss,JBoss一个与Tomcat类似的web容器,相比于tomcat会提供消息队列等更多服务,但JBoss最

终还是惜败于Tomcat,Tomcat成功于简单,应用简单开箱即用,有的时候设计简单就是竞争力。

      netty作为性能高效通信框架,有着广泛用途。

      以netty为基础可以作为推送框架使用,单台服务器能保持极多用户连接,编写应用得当消息推送框架,单台

服务器可以支持c100k连接。

      netty可以作为高性能通信使用,在java rpc中到处都有netty身影。hdfs rpc基于netty构建,开源业界影响最大微

服务框架dubbo通信基于netty实现,京东内部微服务JSF通信也是基于netty实现。netty在java高性能通信场景下,

当前有着垄断的地位。

      关于netty版本,Final版本为netty release版本,可用于线上服务,当下最新为4.1.x版本,尽量用4.x版本,因

为3.x版本存在一定内存泄漏问题,并且3.x api与4.x存在着较大差异,新用netty建议从4.x直接用起来。

      Netty提供了几个常用的解码器,帮助我们解决这些问题,其实上述的粘包和拆包的问题,归根结底的解决方案

就是发送端给远程端一个标记,告诉远程端,每个信息的结束标志是什么,这样,远程端获取到数据后,根据跟发

送端约束的标志,将接收的信息分切或者合并成我们需要的信息,这样我们就可以获取到正确的信息了。

      netty内存泄露,netty编程要注意内存泄露,Netty里四种主力的ByteBuf, 其中UnpooledHeapByteBuf 底下的byte[]能够依赖JVM GC自然回收;而UnpooledDirectByteBuf底下是DirectByteBuffer

,如JAVA碓外内存扫盲贴所述,除了等JVM GC,最好也能主动进行回收;而PooledHeapByteBuf 和 PooledDirectByteBuf,

则必须要主动将用完的byte[]/ByteBuffer放回池里,否则内存就要爆掉。所以,Netty ByteBuf需要在JVM的GC机制之外,有自己的引用计数器和回收过程。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hadoop学习

SQL与NoSQL数据库入门基础知识详解

这几年的大数据热潮带动了一激活了一大批hadoop学习爱好者。有自学hadoop的,有报名培训班学习的。所有接触过hadoop的人都知道,单独搭建hadoop里...

682
来自专栏小程序·云开发专栏

你不知道的Node.js性能优化

仅仅是简单的升级 Node.js 版本就可以轻松地获得性能提升,因为几乎任何新版本的 Node.js 都会比老版本性能更好,为什么?

7.4K4
来自专栏虚拟化云计算

嵌入式hypervisor为物联网而生

与数据中心不同, 物联网领域具有轻量级和灵活性的特殊要求,为了满足在物联网和嵌入式环境中的虚拟化需求,许多专门为嵌入式设备设计的hypervisor产生了,下面...

781
来自专栏EAWorld

从前世看今生,从JavaEE到微服务

我有一个习惯,接触到新概念、新技术出现后,就会探究他的前世今生、来龙去脉,正所谓“太阳底下没有新鲜事”,喜欢从对比中找到价值点,不如此就觉得理解不透彻,就觉得少...

2757
来自专栏blackpiglet

Prometheus vs Zabbix

公司要上监控,Prometheus 是最热门的监控解决方案,作为喜新厌旧的程序员,我当然是选择跟风了,但上级更倾向于 Zabbix,那没办法,只能好好对比一番,...

592
来自专栏杨建荣的学习笔记

MySQL中的double write(二)(r12笔记第17天)

MySQL里的double write是InnoDB的三大闪亮特性,另外两个是insert buffer 和自适应哈希,其实还有几个比如异步IO,Flu...

3079
来自专栏SAP最佳业务实践

SAP最佳业务实践:MM–退货到供应商(136)-2采购退货

一、退货原因 1 退货原因:02 质检未通过(到冻结库存) 在收货过程中,质检未通过。因此,物料将被过帐到冻结库存并移动到用于退货的存储地点(例如,1060)。...

3284
来自专栏大魏分享(微信公众号:david-share)

VMware的灾备与双活----我在vForum 2015分会场的分享(2)

摘要:vSAN延伸集群的出现,不仅使VMware有了自己的存储双活技术,从成本角度来看,更使存储双活这项技术,从“天上”来到了“民间”。 通过vSAN延伸集群加...

4069
来自专栏用户2442861的专栏

分布式统一框架的设计与实现(数据库)

我们设计并开发了内容中心统一的分布式开发框架。我们把它取名为albian, albian是基于java的(故以下简称albianj)。他主要是面向海量数据处理...

821
来自专栏全华班

认识工作流-Activiti详细说明

阅读文本大概需要 5 分钟。 一、Activiti详细说明 ? 首先给大家介绍一下BPMN2规范的分类分为几个部分。 1启动与结束事件、2顺序流、3任务、4网...

3608

扫码关注云+社区