拍卖网站建设公司,搞外贸一般是干什么的,国家建筑工程网653,网站建设的要点Reactor是一种设计模式#xff0c;可以用于构建高并发的网络服务器。 Reactor模式的好处在于#xff1a;可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立、IO请求#xff0c;保证工作线程不被IO阻塞。 前置知识#xff1a;IO多路复用技术 1. 传统网… Reactor是一种设计模式可以用于构建高并发的网络服务器。 Reactor模式的好处在于可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立、IO请求保证工作线程不被IO阻塞。 前置知识IO多路复用技术 1. 传统网络线程模型 如图所示传统网络线程模型在每个客户端连接建立完成之后会为这个客户端连接船舰一个新的线程去处理IO请求以及进行计算。这种模式实际上对应了我们之前说过的BIO也就是说每个线程在客户端数据准备阶段都是被阻塞的虽然这段时间线程什么都不需要干但是它却无法脱身。
这样的网络模型既浪费线程资源又受制于线程数量。
2. Reactor模型
reactor模型实际上就是对前文提到的epoll机制的封装。我们使用reactor线程去处理客户端的连接、IO事件使工作线程从IO中抽身只专注于事件的处理。Reactor线程会遍历所有客户端连接一旦发现其中数据准备完毕便会将事件分发给工作线程由工作线程完成后续处理。
根据Reactor线程数量Reactor模型可以被分为三种单Reactor单线程、单Reactor多线程、主从Reactor。
2.1 单Reactor单线程 在这个模式中只有一个Reactor线程Reactor既要处理客户端连接又要进行处理IO在得知某些连接的IO准备完毕之后Reactor线程还需要对对应的事件进行处理。
2.2 单Reactor多线程
在上面的单Reactor单线程模型中Reactor确实可以使用epoll机制监听多个连接但是对于业务处理它还是需要串行处理的如果业务处理很耗时或者业务量比较大单Reactor单线程模型就力不从心了。
解决办法页很简单Reactor线程仅仅处理客户端的连接建立、IO操作。当监测到某些连接的数据就绪时将业务处理交给一个多线程线程池去处理。
2.3 多Reactor多线程模型
当客户端连接很多单个Reactor线程无法应对所有连接的建立、IO操作时我们使用计算机领域的经典思想负载均衡。我们使用多个Reactor线程去处理IO操作将Reactor线程分为一个MainReactor和多个SubReactor。MainReactor负责接收客户端请求然后acceptor将客户端的连接负载均衡配分到多个SubReactor上每个SubReactor只需要处理被分配到的客户端连接的读写请求。