reactor模式详解,什么是reactor模式
如何解决写爬虫IP受阻的问题?立即使用。
Reactor反应器模式
到目前为止,高性能网络编程都绕不开反应器模式。很多知名的服务器软件或中间件都是基于reactor模式实现的,比如Nginx、Redis、Netty等。
反应器模式是高性能网络编程的必要模式。
Reactor简介
反应器模式由两个角色组成:反应器线程和处理器处理器:
(1)1)反应器线程的职责:负责响应IO事件,并将其分配给Handlers处理器。
(2)2)Handlers处理器的职责:业务处理逻辑的非阻塞执行。
从上面对反应器模式的定义来看,这种模式并没有什么神奇之处。当然,从简单到复杂,反应器模式有许多版本。按照之前的定义,只是最简单的版本。
多线程OIO的致命缺陷
在Java的OIO编程中,第一个也是最原始的网络服务器程序是使用一个while循环来不断地监视新连接的端口。如果是,调用一个sum处理函数来完成它。示例代码如下:
@测试
公共void客户端()引发IOException {
Socket client=新套接字( 127.0.0.1 ,9999);
writer writer=new output streamwriter(client . get output stream());
writer . write( Hello World );
writer . flush();
writer . close();
client . close();
}
@测试
公共void服务器()引发IOException {
server socket server=new server socket(9999);
while (true){
socket socket=server . accept();
reader reader=new InputStreamReader(socket . getinputstream());
打印(阅读器);
reader . close();
socket . close();
server . close();
}
}这种方式最大的问题是,如果没有处理好之前网络连接的句柄(socket),就无法接收后续的连接请求,所以后续的请求都会被阻塞,服务器的吞吐量太低。这对服务器来说是一个严重的问题。
推荐教程:以上《Java》是Java Reactor反应器模式的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。