如何建设好英文网站,2023国际新闻热点事件,基金会网站模板,海南医院网站建设传统IO模型#xff1a;
传统IO模型就是阻塞IO#xff0c;即处理业务逻辑的线程去进行IO#xff0c;当然IO操作很耗时#xff0c;然后线程就得阻塞#xff0c;当然CPU会回收该线程的时间片#xff0c;把该线程挂起#xff0c;切换到其他线程去执行#xff0c;在并发量大…传统IO模型
传统IO模型就是阻塞IO即处理业务逻辑的线程去进行IO当然IO操作很耗时然后线程就得阻塞当然CPU会回收该线程的时间片把该线程挂起切换到其他线程去执行在并发量大的场景中会造成大量的线程切换而每一次线程切换都会消耗一定的资源造成性能低下。 Netty是什么
Netty是一个基于Java NIO非阻塞IO的异步事件驱动的网络应用框架它提供了高性能、可扩展和易于使用的网络编程接口。
Netty做了件什么事情呢就是把业务逻辑线程从IO操作中解放出来了它内部搞了线程池这个线程池里面的线程专门负责去做IO但是对外表现出来业务逻辑线程只要过来就立刻可以拿到它想要的内容而不需要去做IO操作了。
Netty的网络模型基于Reactor模式。首先来看看什么是Reactor模式。 Reactor模式
Reactor模式是一种基于事件驱动的设计模式用于处理并发I/O操作。它的核心思想是将I/O操作和事件处理解耦使得程序能够高效地处理多个并发的I/O请求。
Reactor模式由以下几个关键组件组成 ReactorReactor是事件分发器负责接收并分发事件一般只用一个线程足矣。它会监听各种事件如连接请求、数据到达等并将事件分发给对应事件处理器进行处理。 HandlersHandlers是事件处理器负责实际处理事件也就是实际去执行IO操作的线程一般会弄一个线程池。当Reactor将事件分发给Handlers时Handlers会执行相应的操作如读取数据、写入数据等。 EventEvent是发生的事件如连接建立、数据到达等。它会被封装成事件对象传递给Reactor进行分发。 Event LoopEvent Loop是一个事件循环器一般也是一个线程足矣。在Event Loop中这个事件循环线程会不断地监听事件并将事件分发给对应的事件处理器进行处理。
Reactor模式的工作流程如下 Reactor监听Event并等待Event的到达。 当Event到达时Reactor将Event封装成事件对象。 Reactor将事件对象分发给对应的Handlers。 Handlers执行相应的IO操作如读取数据、写入数据等。 处理完事件后Handlers将控制权交还给Reactor。
Reactor模式的出现就是为了解决线程处理I/O时的阻塞和频繁线程切换所带来的性能问题。通过避免线程的阻塞和频繁的线程切换Reactor模式能够有效地提高程序的性能。相比于传统的线程模型它可以处理更多的并发连接提高了系统的吞吐量和响应性能。
总结起来Reactor模式是一种基于事件驱动的设计模式通过解耦I/O操作和事件处理使程序能够高效地处理多个并发的I/O请求。它由Reactor、Handlers、Event和Event Loop等组件构成通过事件分发和处理来实现并发处理。 Netty网络通信模型
下面是Netty的网络通讯模型概述 Boss线程池Boss线程池负责接受客户端的连接请求并将连接注册到Worker线程池中的某个线程上进行处理。通常情况下Boss线程池只有一个线程。Boss线程大致对应了Reactor模式中的Reactor。 Worker线程池Worker线程池负责处理实际的网络I/O操作包括读取、写入和处理请求等。Worker线程池中可以有多个线程每个线程都会被分配一个或多个连接进行处理。Worker线程池对应了Reactor模式中的Handlers。 Channel、EventLoop和ChannelPipelineNetty中的核心概念是Channel、EventLoop和ChannelPipeline。一个Channel代表一个实际的网络连接EventLoop是一个处理事件的循环而ChannelPipeline则是一个处理事件的管道。EventLoop对应了Reactor模式中的EventLoop。 事件驱动模型Netty的网络模型是基于事件驱动的当有事件发生时如连接建立、数据到达等Netty会将事件封装成事件对象并派发给对应的事件处理器进行处理。事件处理器可以是用户自定义的处理器也可以是Netty提供的预定义处理器。 异步和非阻塞Netty采用异步和非阻塞的方式进行网络操作这意味着它可以同时处理多个连接并且不会因为某个连接的慢速操作而阻塞其他连接的处理。
总的来说Netty的网络模型基于Reactor模式通过Boss线程池接受连接请求并将连接注册到Worker线程池中的某个线程上进行IO处理。Netty采用异步和非阻塞的方式进行网络操作通过事件驱动模型和ChannelPipeline来处理网络事件。这种模型使得Netty在高性能、可扩展和易于使用方面具有优势并广泛应用于构建高性能的网络应用程序。