Rust从入门到实战系列二百三十九:构建多线程 web server

本文讲述了在《ch20-00-final-project-a-web-server》中,通过构建一个返回hello的Web服务器,回顾并应用之前章节学到的知识,包括TCP、HTTP协议,以及如何从单线程扩展到多线程以提高服务器性能。作者强调了通过自定义实现学习系统编程语言Rust的核心概念和技术的价值。
摘要由CSDN通过智能技术生成

ch20-00-final-project-a-web-server.md
commit c084bdd9ee328e7e774df19882ccc139532e53d8
这是一次漫长的旅途,不过我们到达了本书的结束。在本章中,我们将一同构建另一个项目,来展示最
后几章所学,同时复习更早的章节。
作为最后的项目,我们将要实现一个返回 ”hello” 的 web server,它在浏览器中看起来就如图例 20-1 所
示:
hello from rust
523
524 CHAPTER 20. 最后的项目: 构建多线程 WEB SERVER
图例 20-1: 我们最后将一起分享的项目
如下是我们将怎样构建此 web server 的计划:

  1. 学习一些 TCP 与 HTTP 知识
  2. 在套接字(socket)上监听 TCP 请求
  3. 解析少量的 HTTP 请求
  4. 创建一个合适的 HTTP 响应
  5. 通过线程池改善 server 的吞吐量
    不过在开始之前,需要提到一点细节:这里使用的方法并不是使用 Rust 构建 web server 最好的方法。
    crates.io 上有很多可用于生产环境的 crate,它们提供了比我们所要编写的更为完整的 web server 和线
    程池实现。
    然而,本章的目的在于学习,而不是走捷径。因为 Rust 是一个系统编程语言,我们能够选择处理什么
    层次的抽象,并能够选择比其他语言可能或可用的层次更低的层次。因此我们将自己编写一个基础的
    HTTP server 和线程池,以便学习将来可能用到的 crate 背后的通用理念和技术。
    构建单线程 web server
    ch20-01-single-threaded.md
    commit 9c0fa2714859738ff73cbbb829592e4c037d7e46
    首先让我们创建一个可运行的单线程 web server,不过在开始之前,我们将快速了解一下构建 web
    server 所涉及到的协议。这些协议的细节超出了本书的范畴,不过一个简单的概括会提供我们所需的信
    息。
    web server 中涉及到的两个主要协议是 超文本传输协议(Hypertext Transfer Protocol,HTTP)和 传输
    控制协议(Transmission Control Protocol,TCP)。这两者都是 请求-响应(request−response)协议,也
    就是说,有 客户端(client)来初始化请求,并有 服务端(server)监听请求并向客户端提供响应。请求
    与响应的内容由协议本身定义。
    TCP 是一个底层协议,它描述了信息如何从一个 server 到另一个的细节,不过其并不指定信息是什么。
    HTTP 构建于 TCP 之上,它定义了请求和响应的内容。为此,技术上讲可将 HTTP 用于其他协议之上,不
    过对于绝大部分情况,HTTP 通过 TCP 传输。我们将要做的就是处理 TCP 和 HTTP 请求与响应的原始字
    节数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值