一、Netty基础概念

一、Netty基础概念

    1、简介

        (1)、Netty是一个高性能、异步事件驱动的NIO框架,基于JAVA NIO提供的API实现。它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。

        (2)、JDK原生也有一套网络应用程序API,但是存在一系列问题,Netty是对JDK自带的NIO的API进行封装,解决JDK原生API的一系列问题。

            ①、NIO的类库和API繁杂,使用麻烦。你需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。

            ②、需要具备其他的额外技能做铺垫。例如熟悉Java多线程编程,因为NIO编程涉及到Reactor模式,你必须对多线程和网路编程非常熟悉,才能编写出高质量的NIO程序。

            ③、可靠性能力补齐,开发工作量和难度都非常大。例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流的处理等等。NIO编程的特点是功能开发相对容易,但是可靠性能力补齐工作量和难度都非常大。

            ④、JDK NIO的Bug。例如臭名昭著的Epoll Bug,它会导致Selector空轮询,最终导致CPU 100%。 官方声称在JDK 1.6版本的update 18修复了该问题,但是直到JDK 1.7版本该问题仍旧存在,只不过该Bug发生概率降低了一些而已,它并没有被根本解决。

        (3)、使用场景

            ①、阿里分布式服务框架Dubbo的RPC框架使用Dubbo协议进行节点间通信,Dubbo协议默认使用Netty作为基础通信组件,用于实现各进程节点之间的内部通信。

            ②、游戏行业,无论手游服务端还是大型的网络游戏,Netty作为高性能的基础通信组件,它本身提供了TCP/UDP和HTTP协议栈。非常方便定制和开发私有协议栈,账号登录服务器,地图服务器之间可以方便的通过Netty进行高性能的通信。

            ③、大数据领域

                经典的Hadoop的高性能通信和序列化组件Avro的RPC框架,默认采用Netty进行跨界点通信,它的Netty Service基于Netty框架二次封装实现。

    2、Socket通信:网络分层

    3、I/O流程

        (1)、整体分为两步

            ①、磁盘把数据装载进内核的内存空间。

            ②、内核的内存空间的数据copy到用户的内存空间中(此过程才是真正I/O发生的地方)。

            注意: I/O调用大多数都是阻塞的。

        (2)、I/O完整步骤

            ①、进程向内核发起一个系统调用。

            ②、内核接收到系统调用,知道是对文件的请求,于是告诉磁盘,把文件读取出来。

            ③、磁盘接收到来着内核的命令后,把文件载入到内核的内存空间里面。

            ④、内核的内存空间接收到数据之后,把数据copy到用户进程的内存空间(此过程是I/O发生的地方)。

            ⑤、进程内存空间得到数据后,给内核发送通知。

            ⑥、内核把接收到的通知回复给进程,此过程为唤醒进程,然后进程得到数据,进行下一步操作。

    4、九、NIO_L_D_Y_K的博客-CSDN博客

    5、其他

        (1)、相关资料参考记录

            ①、Github:Home · netty/netty Wiki · GitHub(基于Netty4.1)

            ②、网络模型

                a、理解高性能网络模型https://www.jianshu.com/p/2965fca6bb8f

                b、聊聊NIO:https://www.jianshu.com/p/dd2d7b46cc7b

                c、Netty堆外内存泄漏排查,这一篇全讲清楚了:https://www.jianshu.com/p/8c4e6da0e634

                d、Netty如何实现高性能内存管理:https://www.jianshu.com/p/7d6fbd3f501e

                e、图解I/O的五种模型:图解I/O的五种模型

            ③、Netty原理分析

                这可能是目前最透彻的Netty原理架构解析_使用

                netty原理分析_tugangkai的博客-CSDN博客_netty原理详解

                Netty | 小e的笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值