netty

https://blog.csdn.net/jingzi123456789/article/details/106849734

netty概述

netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端,极大简化了tcp和udp套接字服务器等网络编程它的架构特点是:异步非阻塞基于事件驱动高性能高可靠性高可定制性

bio:单个线程阻塞完成

每个请求都需要独立的线程完成数据 Read,业务处理,数据 Write 的完整操作问题。

当并发数较大时,需要创建大量线程来处理连接,系统资源占用较大。

连接建立后,如果当前线程暂时没有数据可读,则线程就阻塞在 Read 操作上,造成线程资源浪费。

nio :channel,buffer,selector(多路复用)

selector的作用:
  • Java NIO 用非阻塞的IO方式,可以用一个线程,处理多个客户端连接,就会用到selector
  • Selector能够检测多个注册的通道上是否有事件发生,如果有事件发生,便获取事件然后针对每个事件进行对应的处理,这样就可以只用一个单线程去管理多个通道,也就是管理多个连接和请求
  • 只有在连接真正有读写事件发生时,才会进行读写,就大大地减少了系统开销,并且不必为每个连接都去创建一个线程,不用去维护多个线程
  • 避免了多线程之间的上下文切换导致的开销

 

selector注册了很多个channel通道,selector监听通道,有一个通道好了后就可以执行connect(连接就绪)、accept(接受就绪),read(读就绪),write(写就绪);

netty启动,监听20880端口,所有给这个端口发送数据的,netty服务器能收到,初始化通道,注册到selector中,监听accept事件,处理通道中的信息,netty与客户端建立连接,读会给一个任务,写给一个任务,写就是返回给客户端

boss线程组:用来监听主线程,来自20880的准备就绪

worker线程组:工作线程

posted @ 2022-09-16 10:16  bug生产队长  阅读(39)  评论(0)    收藏  举报