I/O篇
- Netty的介绍
- Netty 是由JBOSS提供的一个Java开源框架在Github上
- Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序。
- Netty 主要针对在TCP协议下面向客户端的高并发应用,或者Peer-to-Peer/P2P场景下的大量数据持续传输的应用。
- Netty是一个NIO框架,适用于服务器通讯相关场景
- 共四层
- TCP/IP
- java.io
- Nio
- Netty
- Netty的应用场景
- 互联网行业
- 分布式系统各节点之间远程服务调用,Netty 作为异步高性能的通信框架,往往作为基础通信组件被这些 RPC 框架使用。
- 典型应用:Dubbo默认使用Netty作为基础通信组件,用于实现各进程节点之间的内部通信
- 游戏行业
- Netty提供了TCP/UDP和HTTP协议,方便定制和开发私有协议栈,账号登录服务器
- 地图服务器之间可以通过Netty进行高性能的通信
- 大数据领域
- Hadoop的高性能通信和序列化组件AVRo的RPC框架,默认采用 Netty进行跨界点通信
- 它的Netty Service基于Netty框架二次封装实现。
- 其他开源项目
- Akka、flink、spark等
- 互联网行业
- I/O模型基本说明
- 用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能
- Java 共支持3 种I/O模式
- BIO: 同步并阻塞(传统阻塞)
- NIO: 同步非阻塞
- AIO: 异步非阻塞
- BIO、NIO、AIO 适用场景分析
- BIO适用于连接数目比较小且固定的架构,对服务器资源要求比较高,并发局限于应用中,JDK4以前的唯一选择,但程序简单易理解。
- NIO适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,弹幕系统,服务器间通讯等。编程比较复杂,JDK4开始支持。
AIO使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS/操作系统参与并发操作。编程比较复杂,JDK7开始支持。