
Netty
Yisnow.
这个作者很懒,什么都没留下…
展开
-
Netty8:服务器启动源码分析
1、服务端启动时序图创建ServerBootStrap实例。ServerBootStrap是Netty服务端的启动辅助类,它提供了一系列的方法用于设置服务器启动相关的参数。ServerBootStrap只有一个无参的构造函数,是因为他的参数太多了。设置并绑定Reactor线程池。Netty的Reactor线程池就是EventLoopGroup,是EventLoop的数组。处理所有注册到本线程Selector上的Channel,Selector的轮询操作由绑定的EventLoop线程原创 2020-10-17 15:47:16 · 202 阅读 · 0 评论 -
Netty7:核心模块组件
1、Bootstrap、ServerBootstrap一个Netty应用通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件。Bootstrap是客户端程序的启动引导类,ServerBootstrap是服务端启动引导类;2、Future、ChannelFutureChannel channel(),返回当前正在进行IO操作的通道;ChannelFuture sync(),等待异步操作执行完毕;3、Channel可获得当前网络连接的通道的状态;可获得网络连接原创 2020-10-15 19:55:58 · 222 阅读 · 0 评论 -
Netty6:Channel、Pipeline、异步模型
1、Channel介绍Channel是通讯的载体,ChannelHandler负责Channel中的逻辑处理;ChannelPipeline是ChannelHandler的容器,一个Channel包含一个ChannelPipeline,所有ChannelHandler都会注册到ChannelPipeline中,并按顺序组织起来;Netty中,ChannelEvent是数据或者状态的载体,传输数据对应MessageEvent,改变状态对应ChannelStateEvent,当对Channel操作时,会原创 2020-10-15 19:18:02 · 430 阅读 · 1 评论 -
Netty5:Netty模型
1、Netty工作原理示意图1Netty主要基于主从Reactors多线程模型做了一定改进,具有多个Reactor;BossGroup线程维护Selector,只关注Accept;当接收到Accept事件,获取到对应的SocketChannel,封装成NIOSocketChannel并注册到Worker线程,并进行维护;当worker线程监听到selector中通道发生自己感兴趣的事件后,就由handler进行处理;2、Netty工作原理示意图23、Netty工作原理图3Netty原创 2020-10-15 13:54:20 · 390 阅读 · 0 评论 -
5、Reactor线程模型
1、线程模型基本介绍目前存在的线程模型有:传统阻塞IO服务模型;Reactor模式;1.1 传统阻塞IO服务模型(黄色框表示对象,蓝色框表示线程,白色框表示方法);每个连接都需要独立的线程完成数据输入、业务处理、数据返回;当并发数很大,会创建大量的线程;连接创建后如果当前线程没有数据可读,线程会阻塞在read操作,造成线程资源浪费;2、Reactor线程模式针对传统阻塞IO的两个缺点,解决方案:基于IO复用模型:多个连接共用一个阻塞对象;基于线程池复用线程资源:不必为每原创 2020-10-13 15:31:01 · 249 阅读 · 0 评论 -
4、NIO组件之Selector
使用一个线程处理多个客户端连接,就会使用Selectorselector能够检测到多个注册的通道上是否有事件发生,如果有事件发生,获取事件针对每个事件进行相应的处理,就可以使用一个单线程去管理多个通道,即管理多个连接和请求;只有在连接真正有读写事件发生时,才会进行读写,大大地减少了系统开销;避免了多线程之间的上下文切换;2、Selector介绍说明当线程从某客户端socket通道进行读写数据时,若没有数据可用时,该线程可以进行其他任务。线程通常将非阻塞IO的空闲时间用于在其他通道上执行I.原创 2020-10-12 20:50:59 · 407 阅读 · 0 评论 -
3、Java NIO
1、Java NIO介绍non-blocking IO,从JDK1.4开始Java提供了一系列改进的IO新特性,统称为NIO(New IO),同步非阻塞;三大核心部分:Channel、Buffer、SelectorNIO是面向缓冲区(或是面向块编程的)。将数据读取到一个稍后处理的缓冲区,需要时可在缓冲区前后移动,增加了处理过程的灵活性;NIO的非阻塞模式:使一个线程从某通道发送请求或者读取数据,但是仅能得到目前可用的数据,如果目前没有数据可用时,什么也不会获取,而不是保持线程阻塞,直至数据变得可以原创 2020-10-12 16:15:48 · 133 阅读 · 0 评论 -
2、Java BIO
1、IO模型IO模型:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能;Java支持3种网络编程模式:BIO NIO AIOJava BIO同步并阻塞(传统阻塞型):服务器实现模式是一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个线程不做任何事情会造成不必要的线程开销;Java NIO同步非阻塞。服务器实现模式为一个线程处理多个请求,客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求就进行处理。Ja原创 2020-10-12 12:35:02 · 233 阅读 · 0 评论 -
1、netty介绍
1、Netty介绍Netty是由JBOSS提供的一个Java开源框架;是一个异步的、基于事件驱动的网络应用框架,用于快速开发高性能、高可靠性的网路IO程序。主要针对在TCP协议下,面向clients的高并发应用;本质是一个NIO框架,适用于服务器通讯相关的各种应用场景;2、Netty的应用场景互联网行业在分布式系统中,各个节点之间需要远程服务调用,高性能的RPC框架必不可少,Netty作为异步高性能的通信框架,往往作为基础通信组件被这些RPC框架使用;阿里分布式服务框架Dubbo的R原创 2020-10-12 10:05:22 · 124 阅读 · 0 评论