`
切切克闹
  • 浏览: 15662 次
社区版块
存档分类
最新评论

Netty开发记录二

阅读更多

下面我们对Netty服务端创建的关键步骤进行讲解。

 
步骤1:创建ServerBootstrap实例
       

    代码 ServerBootstrap b = new ServerBootstrap();

 

ServerBootstrapNetty服务端的启动辅助类,它提供了一系列的方法用于设置服务端启动相关的参数。ServerBootstrap只有一个无参的构造函数,因为它的参数太多了AND变化太多,采用Builder设计模式解决。

 

步骤2:设置并绑定Reactor线程池

   代码 :

EventLoopGroup bossGroup = new NioEventLoopGroup(1);

 

EventLoopGroup workerGroup = new NioEventLoopGroup();

b.group(bossGroup, workerGroup)  

   NettyReactor线程池是EventLoopGroup,它实际就是EventLoop的数组。EventLoop的职责是处理所有注册到本线程多路复用器Selector上的ChannelSelector的轮询操作由绑定的EventLoop线程run方法驱动,在一个循环体内循环执行。值得说明的是,EventLoop的职责不仅仅是处理网络I/O事件,用户自定义的Task和定时任务Task也统一由EventLoop负责处理,这样线程模型就实现了统一。从调度层面看,也不存在在EventLoop线程中再启动其它类型的线程用于异步执行其它的任务,这样就避免了多线程并发操作和锁竞争,提升了I/O线程的处理和调度性能。

 

步骤3:设置并绑定服务端Channel
   
  代码:b.channel(NioServerSocketChannel.class)  

 

    作为NIO服务端,需要创建ServerSocketChannel,Netty对原生的NIO类库进行了封装,对应实现是NioServerSocketChannel。对于用户而言,不需要关心服务端Channel的底层实现细节和工作原理,只需要指定具体使用哪种服务端Channel即可。因此,NettyServerBootstrap方法提供了channel方法用于指定服务端Channel的类型。Netty通过工厂类,利用反射创建NioServerSocketChannel对象。由于服务端监听端口往往只需要在系统启动时才会调用,因此反射对性能的影响并不大。

 

步骤4:链路建立的时候创建并初始
 
ChannelPipeline cv   

  代码 

b.childHandler(newChannelInitializer<SocketChannel>(){}

           ChannelPipeline并不是NIO服务端必需的它本质就是一个负责处理网络事件的职责链,负责管理和执行ChannelHandler。网络事件以事件流的形式在ChannelPipeline中流转,由ChannelPipeline根据ChannelHandler的执行策略调度ChannelHandler的执行典型的网络事件如下:

 

整个服务端的代码,我会在讲完步骤后贴出。

 

2
0
分享到:
评论

相关推荐

    Netty开发记录三

    在本篇“Netty开发记录三”中,我们将深入探讨Netty框架的使用,这是一个高效、灵活且可扩展的网络应用程序框架,广泛应用于高性能服务器和客户端的开发。Netty简化了网络编程,提供了异步事件驱动的网络通信模型,...

    Netty开发视频教程

    ### Netty开发视频教程知识点详解 #### 一、Netty简介与环境搭建 - **Netty概述**:Netty是一款高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器与客户端。它由JBOSS提出,后被Red ...

    Netty入门教程文档

    第三种是综合了前面二种的优点,会极大地提高ETL的开发速度和效率。 3. 数据抽取 数据抽取需要在调研阶段做大量的工作,首先要搞清楚数据是从几个业务系统中来,各个业务系统的数据库服务器运行什么DBMS,是否存在...

    springboot+netty点对点即时通讯、聊天

    2. **Netty**: Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在即时通讯场景下,Netty以其高效的I/O处理和非阻塞IO模型,确保了数据传输的高效性和实时性...

    整合netty实时通讯

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨 Netty 实时通讯的原理与应用,以及如何利用它构建 WebSocket 服务。 WebSocket 是...

    最新netty中文文档chm版

    在实际项目中,无论是构建TCP/UDP服务器,还是实现Web应用,甚至是处理二进制协议,Netty都能提供强大的支持。 总之,“最新Netty中文文档CHM版”对于想要学习和使用Netty的开发者来说,是一份宝贵的参考资料,它...

    netty框架 jar包

    Netty是一个开源的Java框架,专门用于构建高性能、高可靠性...这个"Netty框架 jar包"是实现这些功能的关键,它封装了所有必要的类和接口,使得开发者可以便捷地将其集成到项目中,从而快速开发出高效、可靠的网络服务。

    Netty权威指南 第2版

    《Netty权威指南 第2版》是一本深入探讨Netty框架的专业书籍,旨在帮助读者全面理解和掌握这个高性能、异步事件驱动的网络应用框架。Netty由Java编写,广泛应用于服务器端开发,尤其是在高并发、低延迟的网络通信...

    xunyu_smgp:smgp协议netty开发

    【标题】"xunyu_smgp:smgp协议netty开发" 涉及的主要内容是使用Java的Netty框架来实现SMGP(Short Message Gateway Protocol)协议。SMGP是一种专用于短信网关的通信协议,常用于移动通信运营商与第三方服务提供商...

    基于Netty的Android点对点聊天软件-源码

    2. **Android Socket通信**:在Android上,Netty通过Java的Socket API与远程服务器进行交互。Socket是网络通信的基础,它提供了一种端口到端口的通信方式,使得数据可以在不同设备间流动。 3. **Android权限管理**...

    Netty 权威指南第二版 李林峰 pdf

    《Netty权威指南第二版》是由李林峰编著的一...通过对《Netty权威指南第二版》的深入学习,读者不仅可以理解Netty的设计原理,还能掌握如何利用Netty开发高效、可靠的网络服务,提升自身在Java网络编程领域的专业技能。

    netty4 in action

    对于HTTP,Netty提供了对HTTP/1.x和HTTP/2的支持,包括WebSocket协议,使得开发Web服务和实时通信应用变得简单。 在性能优化方面,Netty提供了零拷贝(Zero-Copy)技术,通过减少数据在内存中的复制,提升了网络...

    Netty权威指南pdf+源代码

    Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本书旨在帮助读者全面掌握Netty的核心概念、设计模式以及最佳实践。 首先,PDF版本的《Netty权威指南》提供了...

    netty-netty-4.1.32.final-remark.zip

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在深入探讨Netty的知识点之前,我们先简单理解一下标题和描述所暗示的信息。 标题 "netty-netty-4.1.32....

    Netty学习资料.zip

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“Netty学习资料.zip”压缩包包含了韩顺平老师关于 Netty 的一系列教学资源,包括资料、笔记、课件、代码...

    Unity与Netty进行ProtoBuf通信__

    7. **错误处理与调试**:在实际开发中,务必考虑网络异常、数据解析错误等情况,做好相应的错误处理和日志记录。 综上所述,Unity与Netty结合ProtoBuf-net进行通信,能实现高效、低延迟的数据传输,提高游戏的网络...

    C# Netty 客户端,服务器端包含接双向接收

    Netty是Java平台上的一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。尽管Netty本身是用Java编写的,但通过跨语言交互,C#也可以利用Netty进行网络通信。 在描述中...

    netty3的完整配置实例

    在 Netty 3 的配置中,我们需要确保包含所有必要的 Netty jar 包,以及其他可能的第三方库,如 Log4j 或 SLF4J 用于日志记录。 2. **src/main/java**:源代码目录,包含你的服务器或客户端应用的 Java 类。在 Netty...

    springboot与netty整合

    SpringBoot和Netty整合是现代Java开发中一个常见的技术组合,尤其在构建高性能、轻量级的网络应用时。SpringBoot以其便捷的依赖管理和自动配置功能简化了Java应用的搭建和部署,而Netty则是一个高效的异步事件驱动的...

Global site tag (gtag.js) - Google Analytics