Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 开发web服务器有哪些不同的方法?_Http_Tomcat_Node.js_Webserver - Fatal编程技术网

Http 开发web服务器有哪些不同的方法?

Http 开发web服务器有哪些不同的方法?,http,tomcat,node.js,webserver,Http,Tomcat,Node.js,Webserver,开发web服务器有哪些不同的方法? 所以我猜有(1)多线程(2)事件循环,还有其他的吗?每种方法的优缺点是什么?你什么时候会使用它们?你能为每种方法列出具体的impl吗?你应该添加非阻塞I/O。看看。不同的方法可以是: 单线程:所有连接都由一个 “侦听”并等待连接和处理请求 实现起来很简单,但它是最无用的服务器 一次只提供请求 多线程:服务器侦听请求和每个传入的 请求被分配给一个新线程来处理它 连接由其专用线程处理。这种方法(不同于 1) 支持客户端请求的并发处理,但不支持 由于每个新请求都会在

开发web服务器有哪些不同的方法?
所以我猜有(1)多线程(2)事件循环,还有其他的吗?每种方法的优缺点是什么?你什么时候会使用它们?你能为每种方法列出具体的impl吗?你应该添加非阻塞I/O。看看。

不同的方法可以是:

  • 单线程:所有连接都由一个 “侦听”并等待连接和处理请求 实现起来很简单,但它是最无用的服务器 一次只提供请求

  • 多线程:服务器侦听请求和每个传入的 请求被分配给一个新线程来处理它 连接由其专用线程处理。这种方法(不同于 1) 支持客户端请求的并发处理,但不支持 由于每个新请求都会在服务器上创建一个新线程,因此可以很好地扩展 这需要大量的资源,最终服务器会遇到问题 极限

  • 多线程池:与(2)的想法相同,但不是创建新的 线程来处理每个传入的请求,线程池中有一个线程 使用了。线程被创建并放置在池中以供以后使用 重用。这可以很好地扩展以支持多个客户端请求和 这是标准的方法。Tomcat是这样工作的

  • 事件队列:每个传入的请求都被放入一个队列中,并且 由接受队列请求的后台线程处理。它是 非阻塞和这种类型的异步处理也可以扩展 嗯,老实说,我不确定它是否比我的好 我认为可以使用 NIO体系结构


  • 一些服务器,如G-WAN混合多线程池事件队列,让服务器使CPU内核饱和,每个线程处理许多连接

    我参与了这个项目的开发