`
xklin04
  • 浏览: 12716 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Netty之模型分析

阅读更多

1.网络模型

Netty实现了非常经典的多reactor模型其中mainReactor是对应的Boss类,它负责接收客户端新来的连接。它使用了线程池1,有多个Boss对象供绑定多个地址进行监听,这些地址均匀分配到各个Boss上。默认只使用一个Boss对象监听。

 

subReactor对应Worker类,它负责监听由Boss类accept的socket的读写事件。它使用了另外一个线程池2,有多个Worker类处理这些socket,socket均匀分布在各个worker上。每个worker线程读取消息后,同步调用相应的解码、处理器,待处理完毕后才返回。因此如果业务处理器是非常耗时的非计算密集形操作,如DB操作,worker线程的同步操作严重影响性能。因此这些耗时操作适合放置到线程池3中。

 

ExcutorHandler类是一个异步处理类,它包含一个线程池3,在Worker读取消息后将消息以任务的形式交给ExecutorHandler,它会把这任务加入到线程池中并令worker线程立即返回。 

 

2.线程模型

在第1点中介绍了网络模型,其它包括3个线程池,其中与Worker相对的线程池2称为IO线程,其余线程均为非IO线程。从socket读消息操作自然是在IO线程中执行,在读取消息时可能将消息放入消息处理线程池中执行,或者在TimeIdlerHandler定时器超时执行的操作,这些操作后如果有数据要写入worker中的socket,这时因此执行这些操作的线程并非是IO线程,Netty会将这些操作以任务的形式加入到worker的任务队列并唤醒worker,让IO线程来执行这些write操作。



 

3.异步事件驱动模型

每个Channel有一个Pipeline,Pipeline内有两条由Handler构成的处理链,upstream一般处理读事件,downstream一般处理写事件。downstream末端由ChannelSinkt处理。通过ChannelEvent可以获取ChannelFuture立即返回而不需要等待消息处理完毕,向其添加监听器即可在事件处理完毕后执行相关的操作。



 

  • 大小: 26.8 KB
  • 大小: 90 KB
  • 大小: 24.5 KB
  • 大小: 159.6 KB
分享到:
评论

相关推荐

    Netty核心精讲之Reactor线程模型源码分析.mp4

    通过对Netty的Reactor线程模型源码的分析,我们可以更深入地理解Netty的内部工作原理,优化网络应用的性能,以及解决可能出现的并发问题。这对于我们设计和实现高并发、低延迟的网络服务至关重要。

    MINA2与Netty4比较分析

    接下来将根据标题和描述的要求详细分析Mina2与Netty4的区别,重点从它们的线程模型、Buffer使用以及Netty4中集成的序列化工具ProtoBuf等方面进行比较。 首先,Mina2和Netty4都是异步事件驱动的网络应用框架。Netty4...

    多线程并发编程在Netty的应用分析

    《多线程并发编程在Netty中的应用分析》 ...在阅读《多线程并发编程在Netty中的应用分析》这份文档时,建议重点关注Netty的线程模型、事件驱动模型、ByteBuf内存管理以及异步编程机制,这些是理解和应用Netty的关键点。

    深入Hotspot源码与Linux内核理解NIO与Netty线程模型.rar

    《深入Hotspot源码与Linux内核理解NIO与Netty线程模型》这份资料主要探讨了Java的Hotspot虚拟机源码、Linux内核、非阻塞I/O(NIO)以及Netty框架的线程模型。这些知识点在构建高性能、高并发的网络应用中至关重要。 ...

    跟闪电侠学Netty:Netty即时聊天实战与底层原理-book-netty.zip

    《跟闪电侠学Netty:Netty即时聊天实战与底层原理》是一本深入浅出的Netty技术指南,旨在...通过学习这本书,你不仅可以学会Netty的基本使用,还能深入了解其设计思想和优化手段,为你的Java网络编程之路打下坚实基础。

    Netty4.x源码分析详解

    在深入分析 Netty 4.x 源码之前,我们首先需要了解其核心概念和架构。 Netty 的核心组件包括: 1. **ByteBuf**: 作为传统 ByteBuffer 的替代品,ByteBuf 提供了更高效且易用的内存管理机制,支持读写分离,避免了...

    netty-netty-4.1.19.Final.zip_netty_netty学习_rocketmq

    然后,通过分析RocketMQ的源码,观察它是如何利用Netty来实现网络通信的。可以尝试自己编写简单的Netty服务器和客户端,模拟RocketMQ的消息发布和消费过程,加深理解。 总的来说,Netty作为强大的网络通信框架,为...

    Netty源码分析总结.rar

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的...在分析源码的过程中,我们通常会关注类的设计模式、线程模型、内存管理以及性能优化等方面,这对于提升网络编程和系统架构能力大有裨益。

    Netty权威指南完整版高清pdf

    最后,书中还包含了一些高级主题,如Netty的性能调优技巧、安全特性(如SSL/TLS加密)以及实战案例分析,帮助读者在实际项目中更好地应用Netty。 总的来说,《Netty权威指南》是一本全面且深入的Netty学习资料,...

    netty+thrift高并发高性能

    3. **灵活的线程模型**:Netty提供了高度定制化的线程模型,可以根据业务需求灵活配置线程池大小和工作线程数目。常见的线程模型包括Reactor模式和Proactor模式,这些模式能够有效提高IO操作的效率,减少线程间的...

    netty快速入门教程5集 共12集

    在第五课“Netty线程模型源码分析(二)”中,我们可能会深入探讨以下几个方面: 1. **NIO(非阻塞I/O)基础**:Netty是基于Java NIO构建的,因此理解NIO的基本原理至关重要。NIO允许我们进行非阻塞读写,提高了...

    多线程并发编程在Netty中的应用分析

    ### 多线程并发编程在Netty中的应用分析 #### JAVA内存模型与多线程编程 ##### 1.1. 硬件的发展和多任务处理 随着硬件技术的不断进步,尤其是多核处理器的普及及其成本的降低,现代操作系统几乎都具备了支持多...

    netty 实现长连接

    4. **线程模型**:Netty的BossGroup和WorkerGroup线程模型,BossGroup负责接收新的连接,WorkerGroup处理I/O操作,保证了高效的并发处理能力。 5. **ByteBuf**:Netty自定义的内存管理机制,用于高效地读写数据,...

    netty实战教程、netty代码demo

    通过分析和运行这些示例,你可以了解 Netty 的基本用法,如创建服务器、连接服务器、处理 I/O 事件、自定义编码解码器等。同时,也可以尝试扩展这些示例,例如添加新的处理器以处理特定的业务逻辑,或者实现更复杂的...

    netty快速入门教程3-4集 共12集

    "第四课netty线程模型源码分析(一)"则深入探讨了Netty的线程模型。Netty使用EventLoopGroup作为其多线程模型的基础,通常包含一个BossGroup负责接受新的连接,而多个WorkerGroup则处理已连接的通道上的读写事件。每...

    netty权威指南源码李林峰

    在理论方面,讲解了Netty的逻辑架构模型和核心类库的设计原理,而且对Netty在大数据、互联网、游戏行业的应用进行了深入分析;实战方面,从第一个Netty入门程序到私有协议栈的设计和开发,通过实际例程,由浅入深地...

    Netty是什么,Netty为什么速度这么快,线程模型分析.doc

    Netty 的速度之所以快,主要归功于它的优化过的线程模型。在 Netty 中,线程模型分为两类:BossGroup 和 WorkerGroup。BossGroup 负责接收客户端的连接请求,它由多个事件循环线程(NioEventLoop)组成,这些线程...

    NIO+Netty5视频教程与Netty源码剖析视频教程

    这部分教程主要讲解Netty框架的内部工作机制,包括其设计模式、事件驱动模型、线程模型以及缓冲区等核心概念。Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。...

Global site tag (gtag.js) - Google Analytics