单Reactor多线程
2021-06-26 22:50:12 0 举报
单Reactor多线程
作者其他创作
大纲/内容
请求
业务处理
send
read
Handler
Reactor主线程
处理请求
Worker1
Client
建立连接
应用程序
accept
dispatch
说明:1. Reactor对象通过select监控客户端请求时间,收到后,通过dispatch进行分发2.建立连接请求,Acceptor通过accept处理连接请求,然后创建一个Handler对象处理完成后的各种事件3.如果不是连接请求,则由reactor分发调用连接对应的handler处理4.handler只负责响应事件,不做具体的业务处理,通过read读取数据之后,分发给后面的worker线程池的某个线程进行业务处理5.worker线程池会分配独立的线程完成真正的业务,返回给handler6.send将结果返回给client1. 优点:可以充分利用多核CPU的处理能力2. 缺点:多线程数据共享和访问会同步异步资源的问题,而且reactor需要处理所有的事件请求监听响应,在单线程运行,如果高并发场景会容易出现性能瓶颈。举个例子:一个酒店,有一个前台(Reacotr),这时候有个顾客进来后,前台进行接待(accept),接待完成后,需要待顾客办理业务,比如入住,带领顾客做一些其他的业务(Handler)等等,这时酒店招了多名业务员(worker线程池),前台接到顾客后通知业务员,业务员带领顾客进行业务一些列的办理,前台就可以继续在门口进行接待,但是如果有一天门口涌入大量的顾客,前台一个人还是需要进行一个个的接待,造成阻塞的问题
Worker线程池
Worker线程
Reactor
Worker线程1
select
Acceptor
0 条评论
回复 删除
下一页