Hello,今天记录下 Java网络编程的一个热门开源框架 --> Netty

    一起学习,一起进步。继续沉淀,慢慢强大。希望这文章对您有帮助。若有写的不好的地方,欢迎评论给建议哈!

    初写博客不久,我是杨展浩。这是我的第十六篇博客。加油!!!

    1、Netty简介

        Netty 是由 JBOSS 提供的一个 java 开源框架。 Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

        也就是说, Netty 是一个基于 NIO 的客户、服务器端编程框架,使用 Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。 Netty 相当简化和流线化了网络应用的编程开发过程,例如, TCP 和 UDP 的 socket 服务开发。
        “快速”和“简单”并不用产生维护性或性能上的问题。 Netty 是一个吸收了多种协议的实现经验,这些协议包括 FTP, SMTP, HTTP,各种二进制,文本协议,并经过相当精心设计的项目,最终, Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。
        Netty 从 4.x 版本开始,需要使用 JDK1.6 及以上版本提供基础支撑。
        在设计上: 针对多种传输类型的统一接口 - 阻塞和非阻塞; 简单但更强大的线程模型;真正的无连接的数据报套接字支持; 链接逻辑支持复用;
        在性能上: 比核心 Java API 更好的吞吐量,较低的延时; 资源消耗更少,这个得益于共享池和重用; 减少内存拷贝;
        在健壮性上: 消除由于慢,快,或重载连接产生的 OutOfMemoryError; 消除经常发现在 NIO 在高速网络中的应用中的不公平的读/写比;
        在安全上: 完整的 SSL / TLS 和 StartTLS 的支持;
        且已得到大量商业应用的真实验证,如: Hadoop 项目的 Avro(RPC 框架)、 Dubbo、 Dubbox等 RPC 框架。

        另外附上来自百度百科的解析连接:https://baike.baidu.com/item/Netty/10061624?fr=aladdin

        Netty 的官网是: http://netty.io

        

    2、Netty 结构图

        Java网络编程 -- Netty-LMLPHP

    3、线程模型

    Java网络编程 -- Netty-LMLPHP

        Netty 中支持单线程模型,多线程模型,主从多线程模型。

        3.1、单线程模型

            在 ServerBootstrap 调用方法 group 的时候,传递的参数是同一个线程组,且在构造线程组的时候,构造参数为 1,这种开发方式,就是一个单线程模型。
            一般只用于个人机开发测试使用。 不过不推荐使用,效率太慢了。

Java网络编程 -- Netty-LMLPHP

        3.2、多线程模型

            在 ServerBootstrap 调用方法 group 的时候,传递的参数是两个不同的线程组。负责监听的 acceptor 线程组,线程数为 1,也就是构造参数为 1。负责处理客户端任务的线程组,线程数大于 1,也就是构造参数大于 1。这种开发方式,就是多线程模型。
            长连接,且客户端数量较少,连接持续时间较长情况下使用。如:企业内部交流应用。

Java网络编程 -- Netty-LMLPHP

        3.3、主从多程模型

            在 ServerBootstrap 调用方法 group 的时候,传递的参数是两个不同的线程组。负责监听的 acceptor 线程组,线程数大于 1,也就是构造参数大于 1。负责处理客户端任务的线程组,线程数大于 1,也就是构造参数大于 1。这种开发方式,就是主从多线程模型。
            长连接,客户端数量相对较多,连接持续时间比较长的情况下使用。如: 对外提供服务的相册服务器。

Java网络编程 -- Netty-LMLPHP

10-27 15:08