Как работает Интернет
Эта статья о том, что такое Интернет, и как он работает.
Необходимые знания: | Отсутствуют, но мы будем признательны, если вы сначала прочтёте Материал о там как начать разрабатывать свой сайт (en-US) |
---|---|
Цель: | Вы изучите основы технической инфраструктуры Веба и поймёте разницу между Вебом и интернетом. |
Резюме
Интернет является основой сети (the Web), технической инфраструктурой, благодаря которой и существует Всемирная Паутина. По своей сути, интернет — очень большая сеть компьютеров, которые могут взаимодействовать друг с другом.
История интернета не до конца ясна. Проект по созданию интернета был начат в 60-х годах как исследовательский проект при поддержке министерства обороны США. Затем, в 80-х эволюционировал в сеть, которую поддерживали и развивали множество университетов и частных компаний. Технологии, лежащие в основе интернета, продолжали развиваться со временем, но основной принцип работы не сильно изменился: Интернет — это способ подключить компьютеры в единую сеть и убедиться, что даже при серьёзных сбоях, они всё равно найдут способ связаться друг с другом.
Активное изучение
-
: 5-минутный видеоролик поможет вам понять базовые принципы работы интернета (автор Aaron Titus). Подробное, хорошо визуализированное 9-минутное видео.
Погружаемся глубже
Простая сеть
Когда нужно связать между собой два компьютера, вы должны связать их в сеть либо проводным (обычно с помощью Ethernet кабеля), либо беспроводным способом (например, с помощью WiFi или Bluetooth). Современные компьютеры поддерживают любой из этих способов связи.
Примечание: До конца этой статьи мы будем говорить только о физическом (проводном) способе подключения, но беспроводные сети работают аналогичным образом.
Таким способом вы можете подключить более двух компьютеров, но с каждым новым это становится все сложнее. Если хочется подключить, скажем, 10 компьютеров, вам понадобится 45 кабелей и 9 сетевых плат в каждом компьютере!
Чтобы решить эту проблему, каждый компьютер в сети подключается к специальному маленькому компьютеру. Этот компьютер называют маршрутизатором. Маршрутизатор исполняет только одну роль: как сигнальщик на железной дороге он следит за тем, чтобы пакет, отправленный одним компьютером — источником — достиг пункта назначения. Чтобы отправить сообщение компьютеру B, компьютер A сначала должен отправить его маршрутизатору, который перенаправит его компьютеру B и проконтролирует, чтобы данные не попали компьютеру C.
С добавлением маршрутизатора наша сеть здорово упрощается: чтобы соединить 10 компьютеров нам требуется только 10 кабелей (каждый кабель соединяет маршрутизатор с одним из компьютеров).
Сеть сетей
Пока все нормально. Но что нам делать, если нужно объединить в сеть сотни, тысячи или миллиарды компьютеров? Конечно, один маршрутизатор не справится с этой задачей, но если вы внимательно читали, то помните, что маршрутизатор — это обычный компьютер, и ничто не мешает нам соединить друг с другом 2 маршрутизатора. Давайте сделаем это.
Подключая компьютеры к маршрутизатору, а затем — маршрутизатор к другому маршрутизатору, мы можем увеличивать нашу сеть до сколь угодно больших размеров.
Такая сеть уже очень похожа на то, что мы называем интернетом, но мы что-то упустили. Наша сеть построена для решения только наших задач. Но кроме неё есть и другие сети: наши друзья, соседи — кто угодно может создать свою сеть. Как же нам их объединить? Мы не можем протянуть кабели между нашим домом и всеми остальными сетями в мире. Чтобы решить эту проблему, мы можем воспользоваться уже существующими кабельными сетями. Ведь у нас дома уже есть кабели, например, электрические или телефонные. Телефонный провод уже соединяет ваш дом со всем остальным миром, так что он идеально подходит для решения нашей задачи. Чтобы подключить нашу сеть к глобальной сети с помощью телефонного провода, нам понадобится специальное оборудование, которое называется модем. Модем перекодирует информацию, поступающую из нашей сети в формат, который можно передавать через телефонную сеть, и наоборот, декодируют информацию из телефонной сети в формат, который распознают наши компьютеры.
Итак, мы подключились к телефонной сети. Следующий шаг — передать сообщение из нашей сети в сеть, с которой мы хотим связаться. Чтобы сделать это, мы должны подключить нашу сеть к провайдеру услуг интернета (Internet Service Provider (ISP)). Провайдер — компания, которая обслуживает специальные маршрутизаторы, которые не только подключены друг к другу (объединяют в единую сеть всех клиентов провайдера), но также связаны с маршрутизаторами других провайдеров. Таким образом, наше сообщение, пройдя транзитом через сеть нескольких провайдеров, достигнет сеть назначения. Интернет — это сеть сетей, которая объединяет в себе всю вышеперечисленную инфраструктуру.
Поиск компьютера
Чтобы послать сообщение какому-то компьютеру, необходимо как-то обратиться к нему, выделить среди других. Поэтому каждый компьютер, подключённый к сети, имеет свой уникальный адрес для связи: этот адрес называют IP-адресом (IP — сокращение для Internet Protocol, протокол интернета). В зависимости от версии протокола IP этот адрес может записываться по-разному. Самая широко используемая версия интернет-протокола — версия 4. Адреса IPv4 обычно записываются в виде четырёх чисел, разделённых точками, например: 192.168.2.10.
Такие адреса отлично подходят для компьютеров, но людям очень сложно их запоминать. Чтобы упростить себе жизнь, мы можем присвоить каждому IP-адресу псевдоним с понятным для человека именем. Такой псевдоним называют доменным именем. Например, google.com — доменное имя, которое является псевдонимом IP-адреса 173.194.121.32. Использование доменного имени — самый простой способ обратиться к компьютеру в интернете.
Интернет и веб
Как вы уже заметили, когда мы просматриваем Веб с помощью браузера, обычно мы используем доменное имя, чтобы обратиться к веб-сайту. Означает ли это, что Интернет и Веб — это одно и то же? Ответ не так прост. Мы уже знаем, что Интернет — это техническая основа, которая позволяет миллиардам компьютеров связываться друг с другом. Среди этих компьютеров есть небольшая группа (называемая веб-серверами), которые могут отправлять сообщения, распознаваемые браузерами. Интернет — это инфраструктура, а Веб — это сервис, построенный на основе этой инфраструктуры. Стоит отметить, что кроме Веба есть и другие сервисы, построенные на базе Интернета. Например, электронная почта или IRC (en-US).
Интранет и Экстранет
Интранет — это частная сеть, доступ к которой разрешён только членам определённой организации. Такая сеть обычно используется для предоставления участникам портала для безопасного доступа к общим ресурсам, совместной работы и общения. Например, во внутренней сети организации могут размещаться веб-страницы для обмена информацией об отделе или команде, общие диски для управления ключевыми документами и файлами, порталы для выполнения задач делового администрирования и инструменты для совместной работы, такие как базы знаний, доски обсуждений и системы обмена сообщениями.
Экстрасети очень похожи на интрасети, за исключением того, что они открывают всю частную сеть или её часть для обеспечения совместного использования и совместной работы с другими организациями. Обычно они используются для безопасного и надёжного обмена информацией с клиентами и заинтересованными сторонами, которые тесно сотрудничают с бизнесом. Часто их функции аналогичны тем, которые предоставляет интранет: обмен информацией и файлами, инструменты для совместной работы, доски обсуждений и т.д.
И интрасети, и экстрасети работают в той же инфраструктуре, что и Интернет, и используют одни и те же протоколы. Таким образом, авторизованные участники могут получить к ним доступ из разных физических местоположений.
Как работает интернет: понятное пояснение простыми словами
Что такое интернет? Это информационно-коммуникационная сеть и всемирная система объединенных компьютерных сетей для хранения и передачи информации. На портале GeeksforGeeks пишут, что история интернета берет свое начало с 1969 года как одна из исследовательских программ. Он сформировался к 1990-м годам. Само слово Internet — это сокращение от Interconnected Networks, что в переводе означает ‘взаимосвязанные сети’.
Откуда берется интернет? Автор портала How Stuff Works Джонатан Стрикленд объясняет: чтобы понять, что такое интернет и откуда он берется, необходимо посмотреть на него как на систему, состоящую из двух компонентов. Первый компонент — аппаратное обеспечение, которое включает в себя все — от от кабелей до компьютеров. Терабиты информации передаются по высококачественным кабелям. Почти 98% глобального трафика проходит через них. Другие типы оборудования, которые поддерживают интернет: маршрутизаторы, серверы, вышки сотовой связи, спутники, радиоприемники, смартфоны и многое другое.
Все это оборудование не создало бы сеть без второго компонента интернета — протоколов. Протоколы — это наборы правил для выполнения задач, которым следуют машины. Без общего набора протоколов, которым должны следовать все устройства, подключенные к интернету, связь между ними невозможна. Различные машины не смогут понимать друг друга или посылать осмысленную информацию. Протоколы обеспечивают как метод, так и общий язык для машин, используемых для передачи данных.
Протокол передачи гипертекста (НТТР) — это протокол, который используется для просмотра веб-сайтов через браузер и обозначается http перед любым веб-адресом. Также есть FTP-сервер — протокол передачи файлов. Подобные и десятки других протоколов создают основу, в рамках которой должны работать все устройства, чтобы быть частью интернета. Двумя наиболее важными протоколами считают протокол управления передачей (TCP) и интернет-протокол (IP). Часто их объединяют вместе, из-за чего можно увидеть обозначение TCP/IP.
Также предусмотрены DNS-сервера. Domain name server — приложение, предназначенное для ответов на DNS-запросы по соответствующему протоколу. Другими словами, это технология, которая позволяет браузером найти запрошенный сайт по его имени.
Схематическое изображение глобальной сети: Freepik
Важная часть интернета — интернет-адреса. На сайте Stanford сказано, что каждое устройство, в частности компьютеры, которое подключено к интернету, имеет свой уникальный адрес. Еще его называют IP-адресом. Как электрическая розетка обеспечивает связь между электростанцией и электроприбором, не задаваясь вопросом, где электроэнергия произведена, так и IP соединяет две машины в Сети. IP — это значит Internet Protocol. Интернет-адреса имеют вид nnn.nnn.nnn.nnn, где nnn должно быть числом от 0 до 255.
Один из самых распространенных адресов — 4-я версия протокола IPv4. Поэтому адреса большинства компьютеров записываются в виде комбинаций цифр, разделенных точками, — 192.168.2.10. Они позволяют двум машинам в Сети распознавать друг друга.
Что такое сервер? Сервер — это устройство, которое способно принимать запросы по Сети и отвечать на них. Как правило, под сервер выделяют специальный мощный компьютер, который внешне значительно отличается от привычного ПК. Он хранит данные и обеспечивает к ним доступ. Как правило, сервер — очень мощный компьютер, который работает круглосуточно и способен обрабатывать одновременно сотни запросов.
Чтобы подключить интернет к своему ПК, необходимо обратиться к услугам провайдера. Интернет-провайдер — это поставщик интернет-услуг. Он предоставляет доступ к Сети другие связанные с интернетом услуги.
Как работает интернет?
Все пользователи интернета условно делятся на две группы — клиенты и серверы. Серверы представляют собой мощные машины, а клиенты — это компьютеры пользователей, которые подключаются к интернету по необходимости. Связь между ними происходит таким образом: с ПК запрос поступает на сервер через маршрутизатор, который отправляет пакет данных на заданный IP-адрес, с него данные посылаются на DNS-сервер и сервер сайта, а затем запрошенные данные пересылаются в обратном порядке на ПК пользователя.
Схематически путь будет выглядеть так: компьютер→маршрутизатор→ DNS-сервер→сервер сайта→DNS-сервер→маршрутизатор→компьютер.
Отправка запроса
На компьютере пользователя установлено специальное программное обеспечение, которое преобразует введенный на экране запрос и отправляет его через маршрутизатор на сервер провайдера. На сервере провайдера установлено ПО, которое хранит информацию и отвечает на запросы компьютеров клиентов, связывая их с другими серверами в Сети.
Работа маршрутизатора
Маршрутизатор на основе таблиц маршрутизации направляет пакеты данных на указанные IP-адреса. Следует отметить, что маршруты постоянно изменяются в связи с расширением сетевой инфраструктуры и появлением новых провайдеров. Маршрутизатор обладает сведениями о доступных в Сети вариантах маршрутов и выбирает наиболее эффективный и быстрый путь для доставки пакета получателю.
Виртуальные порты
В дополнение к IP-адресу пакету данных должен быть назначен адрес программы, для которой он предназначен. Такой адрес называют виртуальным портом. Все сетевые программы имеют свои уникальные виртуальные порты, через которые они получают адресованные пакеты.
Система доменных имен
Система доменных имен (DNS) была разработана для упрощения работы в интернете. Это альтернативный адрес, который легче запомнить для человека. Доменное имя представляет собой последовательность символов, разделенных точками.
Для улучшения связи между компьютером и человеком существуют службы DNS-серверов. DNS-серверы преобразуют доменное имя в цифровой IP-адрес и наоборот. Когда вводите доменное имя в браузере, служба DNS переводит его в IP-адрес и отправляет пакет на соответствующий ресурс. DNS-серверы можно сравнить с адресной книгой в телефоне.
Все доменные имена поделены на специальные зоны, которые различаются уровнями. Есть домены верхнего уровня — национальные (например, kz) и отраслевые (например, edu — для учреждений образования, job — для кадровых агентств). И домены нижних уровней — географические или региональные (например, spb.ru).
Когда пользователь запрашивает информацию у определенного сервера, этот запрос отправляется по кабелям или радиоволнам на сервер сайта через маршрутизаторы. Как только ответ от сервера поступит на ПК, получив необходимые пакеты данных, система передаст их браузеру, который соберет эти пакеты в единый модуль. Только после этого на экране появится привычный сайт. Такой же принцип работы с любыми устройствами, такими как смартфон, планшет или ноутбук.
Интернет — это соединение компьютерных сетей, позволяющее быстро обмениваться информацией и передавать ее на значительные расстояния за считанные секунды. В свою очередь интернет состоит из ряда протоколов, которые позволяют пользователю отправлять и получать информацию в удобном для него виде.
Как устроен интернет и при чём тут акулы
Слово «интернет» — это сокращение от английского словосочетания interconnected networks (взаимно соединённые сети). Инженеров во второй половине двадцатого века интересовало, как можно соединить компьютеры, чтобы объединить их вычислительные мощности и обмениваться информацией.
Первые разработки начались в США. В 1969 году учёные создали университетскую компьютерную сеть ARPANet, которая считается прототипом интернета. Разработчики соединили несколько компьютеров разных университетов. Позже, когда число компьютерных сетей выросло, возникла задача соединить между собой уже их.
Передавать информацию с одного компьютера на другой можно благодаря подводным кабелям — огромным проводам под водой, проложенным между континентами. Провода как бы «скрепляют» земной шар. Если посмотреть на карту интернет-кабелей, мы увидим, что она похожа на предшествующую ей карту телеграфа: провода проходят в тех же местах.
Как работает интернет?
Сначала пользователь вбивает адрес сайта в браузере. Информация нужного нам сайта находится на другом компьютере — на сервере. Чтобы получить эту информацию, браузеру нужно знать «адрес» компьютера, на котором она находится. Этот «адрес» называется IP-адрес. У каждого сервера он уникален.
Браузер отправляет запрос пользователя на DNS сервер — каталог всех IP-адресов. Его принцип работы можно сравнить с телефонной книгой. В нём доменные имена сайтов (например, google.com) соотносятся с IP-адресами (172.217.22.14, соответственно).
DNS-сервер даёт ответ: буквенному адресу интересующего вас сайта соответствует такой-то IP-адрес. И только тогда браузер отправляет на этот адрес запрос.
Тот в ответ отправляет файлы, и пользователь видит сайт, который он вбил в поисковую строку.
Почему сайтом может пользоваться много человек одновременно?
Интернет отличается от телефонной связи тем, что когда мы говорим по телефону, между нами и нашим собеседником открывается постоянно работающий канал связи. То есть никто третий в нашем разговоре просто так поучаствовать не может. Это называется «коммутация каналов». В Сети же принцип другой — «коммутация пакетов». Информация разбивается на кусочки, называемые пакетами. Это позволяет по одному каналу связи пересылать данные множества сайтов.
Как быстро работает браузер?
Промежуток времени, за который запрос с вашего компьютера достигает сервера и возвращается назад с необходимой информацией, называется ping. Для использования интернета в повседневных целях (например, скроллинга соцсетей) он не имеет значения.
Ping важен для геймеров и для видеоконференций. Если танк стреляет через секунду после нажатия на кнопку, можно проиграть. И, конечно, никто не любит, когда собеседник в Zoom-звонке вдруг замирает с открытым ртом. Ping больше 0,1 секунды считается медленным.
Почему реклама на сайтах знает так много?
Помимо того, что сервер выдаёт информацию по запросу пользователей, он также получает информацию о человеке, создавшем запрос. Например, где он находится. И вместе с информацией необходимого сайта отправляет человеку соответствующие его локации новости и другие материалы. Таким образом, он подстраивает контент под параметры пользователя.
Как работает веб-архив?
Изначально интернет задумывался как архив знаний человечества. Некоторые учёные и программисты хотели сделать так, чтобы всё, что попадает в интернет, осталось там навсегда. В 1996 году американские программисты Брюстер Кейл и Брюс Гиллиат решили, что нужно архивировать всё, что к этому моменту находилось в интернете.
Они создали Web Archive. Это сайт, хранящий информацию о других сайтах, веб-архив. Он работал благодаря технологии Web crawler, или «веб-паук». Это такой скрипт, который «оббегает» сайты и узнаёт, изменились ли они. Если сайт изменился, то «веб-паук» создаёт архивную копию. С 2001 года этот архив стал публичным. В некоторых странах, например, в Дании, есть и свои, национальные архивы интернета.
Сайты живут вечно?
Среднее время жизни интернет-страницы — год. Это логично объясняется тем, что владельцы сайта обычно оплачивают доменное имя сайта на год. Если его не оплачивать, у сайта забирают адрес, и он перестаёт существовать. Исследователи из Гарвардской школы права изучили сайт New York Times и установили, что 72% гиперссылок из материалов 1998 года «мертвы».
Акулы — главная опасность интернета?
Существует легенда, будто акулы представляют собой главную опасность для интернета, потому что перекусывают подводные кабели. Кабели действительно лежат под водой, и их относительно легко повредить. Однако под водой находится гораздо больше кабелей, чем нужно для стабильной работы интернета.
Даже если акула и повредит кабель, интернет продолжит работать. К тому же кабели находятся очень глубоко — акулы там не плавают. А вот телеграфные кабели они перекусывали часто.
Гораздо опаснее для интернета рыболовецкие судна. Они могут сбросить якорь и перебить несколько кабелей сразу. Так, например, недавно произошло в Великобритании.
То, что мы называем интернетом, — это, в сущности, соединённые проводами компьютеры. никаких облаков или виртуальной реальности.
Как работает интернет: основы архитектуры веб-сетей
Эта статья основана на материалах из книги Артура Эйсмонта Web Scalability for Startup Engineers и призвана помочь в первую очередь начинающим программистам. Это очень краткое изложение основных концепций и положений. Желающим основательнее разобраться в архитектуре современного ПО стоит ознакомиться с этой книгой или аналогичными источниками в сети.
Архитектура сетевого взаимодействия
(0) Customers (клиенты) — конечные пользователи веб-приложения.
(1) Domain Name System (DNS, система доменных имен) определяет IP-адрес (адрес сервера, который будет обрабатывать запрос пользователя) на основе доменного имени, например medium.com.
(2) Load Balancer (балансировщик нагрузки) распределяет трафик и нагрузку между несколькими серверами.
(3;5) Cache (кэш) сохраняет данные для ускорения процесса обслуживания запросов пользователей.
(4) Интерфейсное приложение (Frontend) — это пользовательский интерфейс, оболочка приложения, уровень представления данных.
(6) Очередь сообщений хранит запросы пользователей для дальнейшей обработки веб-сервисами.
(7) Веб-сервисы (Backend) отвечают за бизнес-логику (функциональность приложения).
(8) Хранилища данных — место, в которое веб-сервисы записывают данные и из которого считывают их.
(9) Поисковая система отвечает за сложные поисковые запросы, которые хранилище данных не может обрабатывать эффективно.
(10) Сеть доставки контента (CDN) хранит статические файлы для ускоренного обслуживания запросов пользователей, такие как изображения, файлы CSS и JavaScript.
(11) Queue Workers — дополнительные серверы для обработки запросов (сообщений) из очереди сообщений.
Фронтенд-уровень
Фронтенд состоит из следующих компонентов.
- DNS.
- CDN.
- Балансировщик нагрузки/обратный прокси-сервер. Может быть трех типов:
а) размещенный на сервере сервис (например, Elastic Load Balancer от Amazon);
b) самоуправляемый программный балансировщик нагрузки (например, Nginx);
c) аппаратный балансировщик нагрузки. - Интерфейсные веб-серверы (уровень представления и агрегирования результатов, при создании которого используются такие технологии, как PHP, Python, Groovy, Ruby и JavaScript, а именно Node.js).
Фронтенд-уровень хранит информацию о HTTP-сессии (данные о пользователе) через:
b) внешнее хранилище данных;
c) балансировщика нагрузки.
В случае закрепленного сеанса балансировщик должен убедиться, что запросы с одними и теми же сеансовыми cookies всегда отправляются на тот сервер, который изначально выдал файл cookie.
Бэкенд-уровень/веб-сервисы
Реализовать приложение можно следующими способами.
- Создать монолитное приложение, а затем добавить веб-сервисы в соответствии с потребностями бизнеса.
- Придерживаться ориентированного на API подхода: все клиенты (мобильное приложение, настольная и мобильная версии сайта и т. д.) используют один и тот же интерфейс API.
- Комбинация двух вышеперечисленных подходов.
Веб-сервисы могут быть следующих типов.
- Функционально ориентированные.
> Могут вызывать методы функций на удаленных компьютерах без необходимости знать, как эти функции реализованы.
> Пример. SOAP (использует протокол XML и HTTP). SOAP — более сложный и безопасный вариант, чем REST. - Ориентированные на ресурсы (REST + JSON).
> Ресурсы рассматриваются как объекты, над которыми можно выполнять 4 операции: чтение, создание, обновление и удаление ( GET , POST , PUT , DELETE ).
> REST требует аутентификации для доступа к ресурсам (OAuth 2).
> Зависит от безопасности транспортного уровня (HTTPS).
Масштабировать веб-сервисы REST можно тремя способами.
- Разделение на функциональные части/функциональное разделение.
> Способ разделения сервиса на более мелкие независимые веб-сервисы, когда каждый из них фокусируется на определенной функциональности.
> Между веб-сервисами может быть несколько зависимостей, например между пользователем UserProfileService и каталогом продуктов ProductCatalogService , когда пользователь сохраняет продукты из каталога.
> Каждый веб-сервис может масштабироваться независимо.
> Интеграция сервисов может оказаться сложной задачей.
> Автор рекомендует использовать сервис-ориентированную архитектуру и веб-сервисы, только когда в технической команде работает более 10-20 инженеров. - Добавление клонов.
- Кэширование протокола HTTP.
> Когда ответы GET кэшируются (ответ чаще возвращается не из веб-сервиса, а из кэша).
Решения для масштабируемости
- Добавление дополнительных клонов/серверов. Это самый простой и дешевый вариант.
- Разделение по функциональности — специализация серверов. Представляет собой сервис-ориентированную архитектуру (SOA), требует больше усилий, а функциональные возможности ограничены.
- Разделение по данным. Подробнее — в следующем разделе.
Уровень данных
Традиционно применяется вертикальное масштабирование (покупка более мощных серверов, добавление оперативной памяти, дополнительных жестких дисков и т. д.).
Ниже перечислены методы масштабирования реляционного хранилища данных (например, MySQL).
1. Репликация.
> Несколько копий одних и тех же данных хранятся на разных компьютерах.
> Необходимо синхронизировать состояние двух серверов: исходного и реплики.
> Модификация данных — только через исходный сервер, но запросы на чтение могут быть распределены между репликами.
> Проблемы репликации: a) масштабирование только для чтения (отлично подходит для приложений с большим объемом чтения); b) нет способа решить проблему активно растущего набора данных; c) реплики могут возвращать устаревшие данные.
2. Разделение/сегментирование данных.
> Разделение набора данных на более мелкие части (нет необходимости обрабатывать весь набор данных).
> Ключ сегментирования является критерием для разделения (например, идентификатор пользователя в интернет-магазине может представлять сегмент, поэтому любая информация о нем, такая как заказы, хранится в этом сегменте).
> Недостатки: а) добавляет значительный объем работы и сложности; b) невозможно выполнять запросы по нескольким сегментам; c) в зависимости от того, как вы сопоставляете ключ сегментирования с номером сервера, может быть сложность с добавлением серверов в инфраструктуру.
> Azure SQL Database Elastic Scale — это готовое к использованию решение для сегментирования.
Ниже — информация о масштабировании с помощью NoSQL (например, Cassandra, Redis, MongoDB, Riak, CouchDB).
Представленная Эриком Брюером теорема CAP гласит: невозможно построить распределенную систему, которая бы одновременно гарантировала согласованность, доступность и устойчивость к разделению.
- Согласованность (Consistency): одни и те же данные одновременно становятся видимыми для всех узлов.
- Доступность (Availability): все доступные узлы должны обрабатывать все входящие запросы, возвращая адекватный ответ.
- Разделение (Partition): кластер должен продолжать работу, несмотря на любое количество сбоев связи между узлами в системе.
Это означает, что одновременно могут быть выполнены только 2 из 3 атрибутов. Например, MongoDB отдает предпочтение высокой доступности, а не согласованности — это хранилище данных CP. Cassandra — хранилище данных AP — обеспечивает доступность и устойчивость к разделению, но не может постоянно гарантировать согласованность.
Текущий тренд: использование функционального разбиения уровня веб-сервисов и различных хранилищ данных в зависимости от потребностей бизнеса.
Кэширование
- Используется для повышения производительности и масштабируемости, поскольку возвращает готовые к использованию результаты.
- Постарайтесь добиться наиболее высокого коэффициента попаданий в кэш (количество повторных использований одного и того же кэшированного ответа).
- Кэширование полезно для приложений со множеством операций чтения и может быть бесполезным для приложений со множественной записью.
- Любое кэширование при необходимости можно добавить на более поздней стадии.
Кэш на основе HTTP — кэш сквозного чтения (клиент сначала обращается к кэшу и только при отсутствии ответа — к веб-сервису).
Кэш на основе HTTP разделяется на следующие типы.
1. Кэш браузера.
> Позволяет хранить данные в браузере.
2. Кэширование прокси-серверов.
> Сервер обычно устанавливается в локальной корпоративной сети или у интернет-провайдера (ISP).
3. Обратные прокси (например, Nginx).
> Размещаются в корпоративном центре обработки данных, чтобы снизить нагрузку на собственные веб-серверы.
> Отличный способ масштабирования.
4. CDN.
> Используется для кэширования статических файлов, таких как изображения, CSS, JavaScript, видео и PDF, но также может обслуживать и динамический контент, если это необходимо.
Кэши пользовательских объектов могут быть следующих видов.
1. Кэш объектов на стороне клиента.
> Хранится на устройстве клиента.
2. Кэши, расположенные с кодом.
> Расположены на веб-серверах (FE или BE).
> Объекты могут кэшироваться непосредственно в: a) памяти/ОЗУ приложения; b) разделяемой памяти (к ней могут обращаться несколько процессов, запущенных на одной машине); c) сервер кэширования может быть развернут на каждом веб-сервере как отдельное приложение (для небольших веб-приложений).
3. Распределенные объектные кэши.
> Redis, Memcached.
Асинхронная обработка
При синхронной обработке вызывающая сторона отправляет запрос и ждет ответа, прежде чем продолжить работу. Используя синхронную обработку, невозможно создавать современные адаптивные приложения.
Асинхронная обработка — клиент может завершить работу, не зная результата обработки запроса, принцип “выстрелил и забыл”.
Очереди сообщений — это технология асинхронной обработки.
- Производители сообщений — часть клиентского кода, создающая сообщение и отправляющая его в очередь сообщений.
- Очереди сообщений — в них сообщения буферизуются и отправляются потребителям.
- Потребители сообщений получают и обрабатывают сообщения из очереди сообщений. Типы потребителей сообщений: а) cron-подобные (вытягивают сообщения из очереди); 2) демоноподобные (push-модель).
Ниже — примеры платформ обмена сообщениями.
- Amazon Simple Queue Service (SQS) — хорошее, простое и практичное решение для стартапов на ранней стадии.
- RabbitMQ предоставляет много возможностей, в том числе сложную маршрутизацию. Это довольно простая и гибкая платформа.
- ActiveMQ написана на основе Java, предлагает очень малую задержку и менее гибкую маршрутизацию, а также может быть чувствительна к пиковым нагрузкам публикуемых сообщений.
Управляемая событиями архитектура
- Не является моделью запроса/ответа. Компоненты объявляют уже произошедшие события вместо того, чтобы запрашивать работу, которая должна быть выполнена.
- Событие — это объект или сообщение, представляющие произошедшее.
- Есть издатели и потребители, которые ничего не знают друг о друге. Они знают только формат и значение сообщения о событии.
Поиск данных
- Полное сканирование таблицы — обычный поиск (нужно просмотреть весь набор данных, чтобы найти искомую строку).
- Для ускорения поиска используются индексы:
- Что касается моделей данных, реляционная модель — это представление имеющих взаимозависимости таблиц. В нереляционной модели данных вы фокусируетесь на сценариях использования и разрабатываете соответствующие запросы, например, запрос о возвращении набора продуктов (обычно в виде JSON со списком продуктов).
- Для сложных поисковых запросов рекомендуется выбирать поисковые системы. Обычно они используют инвертированный индекс, который позволяет искать фразы и отдельные слова. Готовыми к использованию поисковыми системами являются Amazon CloudSearch, Azure Search, Elasticsearch, Solr и Sphinx.
Заключение
Масштабируемость — это не только архитектура, но и автоматизация различных процессов (тестирование, сборка и развертывание, мониторинг и оповещение, агрегация журналов).