(精华)JAVA Reactor模型_流程图_架构图_系统图_数据库
2024-11-03 14:20:37 30 举报
(精华)JAVA Reactor模型
作者其他创作
大纲/内容
建立连接
send
Acceptor
select
Worker线程
Reactor主线程
Worker线程池
client
处理请求
Main Reactor
Reactor
业务处理
单Reactor多线程
read
...
Sub Reactor
Handler
dispatch
主从Reactor多线程
accept
1、Reactor主线程MainReactor对象通过select监听客户端连接请求事件,收到事件后,通过Acceptor处理连接事件2、Acceptor处理完连接事件后,MainReactor将连接分发到SubReactor3、SubReactor将连接加入到队列进行监听,并创建Handler对各种事件处理4、Handler只负责响应read、send事件,不做具体业务处理。通过read读取数据后,会分发给后面的Worker线程池中的某个线程处理业务。5、Worker线程池中的线程处理完业务,会将结果返回给Handler。6、Handler收到响应后,通过send将结果返回给clientMainReactor只负责处理连接事件SubReactor负责处理read、send事件Worker负责处理具体业务Nginx、Netty都是基于这种线程模型
1、Reactor对象通过select监听客户端请求事件,再通过dispatch进行分发2、如果是连接请求,会分发到Acceptor处理,然后创建一个Handler来处理完成连接后的各种事件3、如果不是连接请求,会分发到对应的Handler来处理4、Handler只负责响应read、send事件,不做具体业务处理。通过read读取数据后,会分发给后面的Worker线程池中的某个线程处理业务。5、Worker线程池中的线程处理完业务,会将结果返回给Handler。6、Handler收到响应后,通过send将结果返回给client将业务放入专门的线程池中处理,可以充分利用CPU多核性能;读写操作还是由Reactor单线程来完成,高并发下容易出现瓶颈
1、Reactor对象通过select监听客户端请求事件,再通过dispatch进行分发2、如果是连接请求,会分发到Acceptor处理,然后创建一个Handler来处理连接完成后的后续业务处理3、如果不是连接请求,会分发到对应的Handler来处理4、Handler会完成read -> 业务处理 -> send完整的业务流程服务端用一个线程通过多路复用来完成连接,读,写,业务处理操作当读,写,业务处理耗时,容易出现性能问题
Reactor子线程1
Reactor子线程N
单Reactor单线程
0 条评论
下一页
为你推荐
查看更多