Я понимаю, что этот вопрос может быть расплывчатым / слишком широким, но я ищу основные принципы / резюме.
Как такой сайт, как Google или Facebook, например, справляется с миллиардами просмотров страниц, которые он получает?
Мне известен циклический DNS, который, насколько я понимаю, обслуживает один IP-адрес посетителю A, затем другой IP-адрес посетителю B в циклическом режиме и так далее.
У этих сайтов есть несколько (сотен?) Серверов, на которых есть копия сайта google каждый сервер, а все синхронизируются?
Чтобы попытаться подвести итог - как очень большие сайты с миллионами просмотров на самом деле справляются с трафиком? Как они поддерживаются? И где взять опыт настройки?
Я хотел бы узнать больше, но на самом деле не имея необходимость для такой установки мне трудно получить тематические исследования или материал, чтобы узнать больше.
Надеюсь, в этом есть какой-то смысл. Спасибо.
У них много разных мест, и все пользователи направляются в ближайшее место. Это делается с помощью Anycast.
В каждом месте у них есть много серверов переднего плана (веб-серверов), а в бэкэнде - несколько разных кластеров баз данных. Часто они делают сегментирование базы данных там.
Часто между интерфейсными серверами и внутренними серверами баз данных есть промежуточный слой. В этом слое происходят все вычисления и обработка данных. Google использует там Уменьшение карты.
Это очень короткое введение, но ссылки должны помочь вам найти более подробную информацию.
Краткое описание: крупные корпоративные клиенты, такие как планирование полетов авиакомпаний, используют Oracle, Sun, IBM Bladecenters и специальный код, крупные компании, такие как eBay, Twitter, Facebook, Google, используют все индивидуально, все, что они могут заставить работать, и держат это в секрете, потому что это одна из очень сложных вещей, которые им пришлось решить, чтобы их компания вообще стала возможной.
-
Небольшие веб-серверы стали очень распространенными, и вы обычно увидите веб-сервер, такой как Apache, Tomcat или IIS, и, возможно, с базой данных за ним (PostgreSQL, SQL Server или MySQL), а также, возможно, с уровнем программирования (PHP, Python, Ruby, Java и т. Д.).
Для более крупных, но все же небольших настроек вы разделяете эти слои на разные серверы - два запускают Apache, оба смотрят на один и тот же общий файл, два запускают базу данных с половиной данных в каждом, может быть, еще один выполняет кеширование, или, может быть, вы просто делаете их такими же мощными как вы можете себе позволить. Это может вам помочь - Plenty of Fish вошла в сотню лучших сайтов HitWise в 2007 году, обеспечивая более 2 миллионов просмотров в час, с 1 сервером и аутсорсинг хостинга изображений для Akamai.
Если вы богаты, например правительство, авиационная отрасль и т. д., вы можете масштабироваться отсюда, перейдя к массивным и специализированным серверам, таким как блейд-центры, серверы Sun с десятками процессоров, десятки дисков в устройстве хранения, базы данных Oracle и т. д.
Для всех остальных вопрос о том, как увеличить дешевизну, все еще остается без ответа. То, как они это делают, - одна из основных проблем их компании, и они потратят много усилий на ее создание.
Скорее всего, он будет состоять из интересных способов задействовать множество серверов баз данных. Не Google, они написали свою собственную файловую систему и замена базы данных сверху. Вы можете увидеть сегментирование (разделение контента по шкале A – M на одном сервере, N – Z на другом) или репликацию (все серверы имеют одни и те же данные, чтение происходит с любого из них, запись идет на все) или что-то особенное.
Вероятно, он будет состоять из множества серверов кеширования, например работает Memcached. Они будут иметь много оперативной памяти и быстро возвращать запросы к базе данных, которые были выполнены до недавнего времени, файлы, которые были запрошены недавно. В 2008 году Facebook заявил: «Мы используем более 800 (memcached) серверов, предоставляющих нашим пользователям более 28 терабайт памяти». ссылка на сайт
Вы, вероятно, найдете какую-нибудь службу CDN (сеть доставки контента), такую как Akamai, где вы даете им все свои изображения, и они распространяют их по всему миру, а вы ссылаетесь на них и автоматически обслуживаете ближайших к пользователю пользователей из их сети.
Вы также найдете много нестандартного кода и людей, которые много работают, но держат это в секрете. Обслуживание аукционов eBay означает обработку большого объема трафика, но данные для одного предмета аукциона в основном статичны, а поиск на аукционах eBay требует большой обработки данных. Поиск в сети Google требует большой обработки данных, но по-другому - разные данные хранятся на другом сервере. Facebook - это много информации, пересекающейся с множеством пользователей, и Twitter тоже, но с другими характеристиками. Google и Facebook разрабатывают собственное серверное оборудование.
Как такой сайт, как Google или Facebook, например, справляется с миллиардами просмотров страниц, которые он получает?
Много много серверов во многих центрах обработки данных.
Мне известен циклический DNS, который, насколько я понимаю, обслуживает один IP-адрес посетителю A, затем другой IP-адрес посетителю B в циклическом режиме и так далее.
Ах. Нет, он возвращает разные IP-адреса (циклический перебор) по каждому запросу, но это уведомление обязательно означает каждого посетителя.
У этих сайтов несколько (сотен?) Серверов, на каждом из которых есть копия сайта google, и все они синхронизированы?
Нет. Сделайте это «десятки тысяч» серверов, и ответ будет положительным. Google управляет МНОЖЕСТВОМ центров обработки данных с более чем 100 000 серверов В КАЖДОМ.
И они используют маршрутизацию AS для перенаправления трафика в ближайший центр обработки данных.