Netty通信原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nangeali/article/details/82596963

Netty

基于Java框架NIO,进行通信
是一个异步事件驱动的,网络应用程序框架

用于快速开发可维护的高性能协议服务器和客户端
极大地简化了TCP和UDP套接字服务器等网络编程

Dubbo底层通信

使用的netty框架,进行通信

实现原理

基于NIO的多路复用模型,来实现通信
这里写图片描述

启动过程

Netty服务器启动
会绑定监听某一个端口
比如,dubbo的20880端口

此时,所有给监听端口,发送的数据
Netty服务器都可以收到

启动之后,初始化服务器通道
通道初始化完成,会注册到selector中

Selector,就是一个多路复用器
这个Selector,负责监听channel通道的Accept事件

Accept事件,表示通道接收数据,准备就绪
准备就绪之后,会处理通道中的数据

处理请求

此时,Netty与客户端建立连接
生成NioSocketChannel,与客户端建立连接的通道

把这个通道,注册到selector中
这个selector,负责监听Read、Write事件

Read,通道中,数据读准备就绪
表示请求发送的数据,接收完成,可以读取了

Write,通道中,数据写准备就绪
表示可以给客户端通道中,写响应数据了

读准备就绪,会执行一个任务
写准备就绪,会执行一个任务
这些任务,都会抛送给任务队列

Netty负责,执行任务队列中的所有任务
监听,Accept也会生成任务队列
接收准备就绪,会执行一个任务

这些任务,也会抛送给任务队列来执行
整个任务队列,处理完成
Netty就结束了

线程组

Boss线程组
用来监听主线程
监听来自于监听端口的,所有连接的准备就绪事件
Accept事件

Worker线程组
用于当Accept准备就绪以后,需要处理的工作
这些需要处理的工作,都会抛送给Worker
Worker会处理这些工作

猜你喜欢

转载自blog.csdn.net/nangeali/article/details/82596963