Я взглянул на серверы обмена стеком:
Кажется, у них всего два центра обработки данных с 11 серверами. Здесь нет упоминания о CDN, что, как я полагаю, невозможно, поскольку они используют рендеринг html на стороне сервера (ASP.Net).
Тем не менее, мне кажется, что они так же быстры, как Google (у которого есть миллиард серверов). Как это возможно?
Прочтите серию блогов Ника Переполнение стека: техническая деконструкция . Stack Exchange - это традиционная архитектура из нескольких стоек локальных серверов за CDN . Как неоднократно говорилось в этой серии статей, «производительность - это особенность», фанатичная ориентация операций на скорость. Большинство запросов попадает в глобальный CDN. Запросы веб-серверов, вероятно, кешируются в памяти - кеширование динамического содержимого абсолютно возможно. Фактические обращения к базе данных оптимизированы до момента написания специального программного обеспечения ORM. Даже медленный путь из другого конца света может показаться приятно быстрым, когда производительность - это особенность.
Хотя в обеих компаниях работают люди, ориентированные на скорость, масштабы Google и Stack Exchange сильно различаются. Google пытается проиндексировать всю информацию и сдает в аренду достаточно вычислительных ресурсов, чтобы стать одним из крупнейших облаков. Stack Exchange - это несколько ТБ популярных вопросов и ответов. SE определенно превосходит свой вес с точки зрения влияния поисковых систем и моих личных предпочтений. Отчасти из-за скорости, отчасти из-за растущих сообществ, которые действительно отвечают на вопросы.
Вы можете быстро увидеть их заголовки кэша лака с помощью:
$ curl -sSIL stackoverflow.com
HTTP/1.1 301 Moved Permanently
cache-control: no-cache, no-store, must-revalidate
location: https://stackoverflow.com/
server: Microsoft-IIS/10.0
x-flags: AA
x-aspnet-duration-ms: 0
x-request-guid: 6fa7e0c9-dfcb-4bf7-95fc-a7d6b6a0b29b
x-is-crawler: 1
x-providence-cookie: 942d24a0-db65-949e-1ef6-25b4bd2e0927
feature-policy: microphone 'none'; speaker 'none'
content-security-policy: upgrade-insecure-requests; frame-ancestors 'self' https://stackexchange.com
Accept-Ranges: bytes
Date: Fri, 26 Mar 2021 15:39:52 GMT
Via: 1.1 varnish
Connection: keep-alive
X-Served-By: cache-ams21076-AMS
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1616773192.208295,VS0,VE76
Vary: Fastly-SSL
X-DNS-Prefetch-Control: off
Set-Cookie: prov=942d24a0-db65-949e-1ef6-25b4bd2e0927; domain=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
HTTP/2 200
cache-control: private
content-type: text/html; charset=utf-8
server: Microsoft-IIS/10.0
strict-transport-security: max-age=15552000
x-route-name: Home/Index
x-frame-options: SAMEORIGIN
x-flags: AA
x-aspnet-duration-ms: 3
x-request-guid: 6dea1d9b-ee1c-46f0-9d8b-042cf588aa45
x-is-crawler: 1
x-providence-cookie: ce7f511e-4a12-023f-eef8-28f1d2742f65
feature-policy: microphone 'none'; speaker 'none'
content-security-policy: upgrade-insecure-requests; frame-ancestors 'self' https://stackexchange.com
x-page-view: 1
accept-ranges: bytes
date: Fri, 26 Mar 2021 15:39:52 GMT
via: 1.1 varnish
x-served-by: cache-ams21050-AMS
x-cache: MISS
x-cache-hits: 0
x-timer: S1616773192.383164,VS0,VE79
vary: Fastly-SSL
x-dns-prefetch-control: off
set-cookie: prov=ce7f511e-4a12-023f-eef8-28f1d2742f65; domain=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly