网络通讯框架: Netty、Mina

#1、概述 Mina:spring

Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了很是便利的框架。当前发行的 Mina 版本2.04支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通信程序,Mina 所支持的功能也在进一步的扩展中。目前,正在使用 Mina的应用包括:Apache Directory Project、AsyncWeb、AMQP(Advanced Message Queuing Protocol)、RED5 Server(Macromedia Flash Media RTMP)、ObjectRADIUS、 Openfire等等。apache

Netty:编程

Netty是一款异步的事件驱动的网络应用框架和工具,用于快速开发可维护的高性能、高扩展性协议服务器和客户端。也就是说,Netty是一个NIO客户端/服务器框架,支持快速、简单地开发网络应用,如协议服务器和客户端。它极大简化了网络编程,如TCP和UDP套接字服务器。安全

  • mina效率更快,netty性能更稳
  • mina将内核和一些特性的联系过于紧密,使得用户在不须要这些特性的时候没法脱离,相比下性能会有所降低;netty解决了这个设计问题
  • 它们的架构差异不大,mina靠apache生存,而netty靠jboss,和jboss的结合度很是高,netty有对google protocal buf的支持,有更完整的ioc容器支持(spring,guice,jbossmc和osgi)
  • netty和mina在处理UDP时有一些不一样,netty将UDP无链接的特性暴露出来;而mina对UDP进行了高级层次的抽象,能够把UDP当成"面向链接"的协议,而要netty作到这一点比较困难。mina把TCP和UDP同样当"有链接"的处理,一个UDP请求会按照address产生一个新的 IoSession,过时时间是1分钟,这样作的好处是显然的,可是对于有性能要求的项目就很差了,对一个无链接的东西cache1分钟,大多数时候多是白cache了,作无用功。 Mina这样作可能还有个初衷是连续解码用的,好比一个包太大了,分了两次传输;可是这样的设计应该是udp大忌了。

其余:Grizzly服务器

Grizzly是一种应用程序框架,专门解决编写成千上万用户访问服务器时候产生的各类问题。使用JAVA NIO做为基础,并隐藏其编程的复杂性。容易使用的高性能的API。带来非阻塞socketd到协议处理层。利用高性能的缓冲和缓冲管理使用高性能的线程池。网络

#2、Netty 设计架构

  • 统一的API,适用于不一样的协议(阻塞和非阻塞)
  • 基于灵活、可扩展的事件驱动模型
  • 高度可定制的线程模型
  • 可靠的无链接数据Socket支持(UDP)

性能框架

  • 更好的吞吐量,低延迟
  • 更省资源
  • 尽可能减小没必要要的内存拷贝

安全异步

  • 完整的SSL/TLS和STARTTLS的支持
  • 能在Applet与Android的限制环境运行良好

健壮性socket

  • 再也不因过快、过慢或超负载链接致使OutOfMemoryError
  • 再也不有在高速网络环境下NIO读写频率不一致的问题

易用

  • 完善的JavaDoc,用户指南和样例
  • 简洁简单
  • 仅信赖于JDK1.5

总体架构
输入图片说明

参考文献:
http://lippeng.iteye.com/blog/1907279
http://blog.csdn.net/dc_726/article/details/48978891

相关文章
相关标签/搜索