Skip to content

最终项目:构建多线程Web服务器

这是一个漫长的旅程,但我们已经到达了本文档网站的结尾。在本章中,我们将一起构建最后一个项目,以演示我们在最后几章中涵盖的一些概念,以及回顾一些早期的课程。

对于我们的最终项目,我们将制作一个在Web浏览器中显示"hello"的Web服务器,如图21-1所示。

图21-1:我们的最终共享项目

以下是我们构建Web服务器的计划:

  1. 了解一些关于TCPHTTP的知识。
  2. socket上监听TCP连接。
  3. 解析少量HTTP请求。
  4. 创建适当的HTTP响应。
  5. 使用线程池改善我们服务器的吞吐量。

在我们开始之前,我们应该提到两个细节。首先,我们将使用的方法不会是用Rust构建Web服务器的最佳方式。社区成员已经在crates.io上发布了许多生产就绪的crate,它们提供了比我们将构建的更完整的Web服务器和线程池实现。然而,我们在本章中的意图是帮助你学习,而不是走捷径。因为Rust是一种系统编程语言,我们可以选择我们想要使用的抽象级别,并且可以达到在其他语言中不可能或不实用的更低级别。

其次,我们在这里不会使用asyncawait。构建线程池本身就是一个足够大的挑战,而不用添加构建异步运行时!但是,我们将注意到asyncawait如何适用于我们在本章中将看到的一些相同问题。最终,正如我们在第17章中提到的,许多异步运行时使用线程池来管理它们的工作。

因此,我们将手动编写基本的HTTP服务器和线程池,以便你可以学习你将来可能使用的crate背后的一般思想和技术。

MIT Licensed | Copyright © 2020-present eveningwater