Http

Google 如何管理請求的生命週期(來自 SRE 書籍)?

  • December 10, 2017

我正在閱讀Site Reliability Engineering,這是一本關於 Google 如何管理其軟體基礎架構的書。第 2 章中有一節描述了對 Google 服務的請求的生命週期。要點是:

$$ … $$首先,使用者將瀏覽器指向shakespeare.google.com。為了獲得相應的 IP 地址,使用者設備使用其 DNS 伺服器 (1) 解析該地址。 $$ … $$瀏覽器連接到 [已解析] IP 上的 HTTP 伺服器。此伺服器(名為 Google Frontend,或 GFE)是一個反向代理,可終止 TCP 連接(2)。GFE 查找需要哪個服務$$ … $$並向該伺服器發送一個包含 HTTP 請求的 RPC (3)。 $$ … $$後端將包含結果的 protobuf 交給 Shakespeare 前端伺服器,後者組裝 HTML 並將答案返回給使用者

這是該過程的示意圖: Google 請求的生命週期

我對反向代理終止 TCP 連接的部分感到困惑。如果 TCP 連接終止,如何將響應發送回客戶端?文本說前端伺服器(在名為 Application Frontend 的圖片中)將響應返回給使用者。這怎麼可能,因為前端伺服器與客戶端沒有打開連接?可能我理解錯了,作者想說的是反向代理在把前端伺服器的響應寫到客戶端**之後就終止了TCP連接?**這種解釋符合反向代理的定義。

TL;DR : 有人可以解釋一下響應是如何到達客戶的嗎?

在這種情況下,“終止”是接收客戶端請求並將其轉發到應用程序前端的位置。應用程序返回其響應,然後將其作為響應發送給客戶端,因此可以正確地說,來自瀏覽器的查詢僅到達圖表中的 GFE,因為 TCP 數據包被重寫以傳遞到 Google 的網路,被定向到請求的應用程序。

引用自:https://serverfault.com/questions/887419