【设计模式】高性能IO----Reactor模式

最近看到muduo网络库相关书籍,看到了Reactor模式,想了解一下Reactor模式,参考了很多网上大神的资料。这里算是Mark吧。

1. 为什么使用Reactor模式

  • 讲到高性能IO绕不开Reactor模式,它是大多数IO相关组件如Netty,Redis在使用的IO模式。它是如何来解决高性能并发呢?

【java】Reactor模式

网络编程发展史:

  1. 最最原始的网络编程思想就是服务器用一个while循环,不断监听端口是否有新的套接字连接,如果有,那么就调用一个处理函数处理,类似:
while(true){
socket = accept();
handle(socket)
} 

很明显这种方式无法并发,效率极低,如果当前的请求没有处理完,那么后面的请求只能被阻塞,服务器的吞吐量太低。

  1. 使用多线程,也就是很经典的connection per thread,每一个连接用一个线程处理,类似:
while(true){
socket = accept();
new thread(socket);
} 

tomcat服务器的早期版本确实是这样是实现的。多线程的方式确实一定程度上极大地提高了服务器的吞吐量,因为之前的请求在read阻塞后,不会影响到后续的请求ÿ

你可能感兴趣的:(设计模式,Reactor模式)