深入分析高并发框架Mina和Netty的内存模型差异

Mina和Netty的区别这样来看:

  • Mina:开发高性能和高可用性的网络应用程序的基础框架。
  • Netty:开发高性能和高可用性的网络应用程序的基础框架。
  • 内存分配方式:HeapByteBuffer和DirectByteBuffer分配。
  • 线程模型:分析的数据集生成,数据处理,数据建模,数据预测,数据模型调优。

MINA是用于开发高性能和高可用性的网络应用程序的基础框架 通过使用MINA框架可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入到业务设计和开发当中 MINA框架的应用比较广泛,应用的开源项目有Apache Directory、AsyncWeb、Apache Qpid、QuickFIX/J、Openfire、SubEthaSTMP、red5等,基于java NIO类库开发;采用非阻塞方式的异步传输; 事件驱动;支持批量数据传输;支持TCP、UDP协议;串口通讯程序; 控制反转的设计模式(支持Spring);采用优雅的松耦合架构;可灵活的加载过滤器机制;单元测试更容易实现; 可自定义线程的数量,以提高运行于多处理器上的性能;采用回调的方式完成调用,线程的使用更容易。

Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。Netty 利用 Java 高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 构建一个客户端/服务端,其具有高并发、传输快、封装好等特点。高并发 :Netty是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高 。传输快 :Netty的传输快其实也是依赖了NIO的一个特性——零拷贝。封装好 :Netty封装了NIO操作的很多细节,提供易于使用的API,还有心跳、重连机制、拆包粘包方案等特性,使开发者能能够快速高效的构建一个稳健的高并发应用。

mina  buffer 分配方式:默认实现采用了 HeapByteBuffer,每次都是直接调用  ByteBuffer.allocate(capacity) 直接分配.buffer 分配大小预测:根据每次读事件实际读到的字节数计算分配 buffer 的大小,若实际读到字节将 ByteBuffer 装满,说明来自网络的数据量可能较大而分配 buffer 容量不足,则扩大 buffer 一倍。若连续 2 次读到的实际字节数小于 buffer 容量的一半,则缩小 buffer 为原来的一半

netty  buffer 分配方式:默认实现采用了 DirectByteBuffer,并且实现了 buffer cache,只要 buffer 大小不改变会重复利用已经分配的 buffer.buffer 分配大小预测:初始化了一张 buffer size 静态分配表如下(截取部分),假如当前默认 buffer 为 2048

发布了331 篇原创文章 · 获赞 350 · 访问量 23万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览