С ростом числа сценариев, таких как высокий одновременный доступ и массовая обработка данных больших веб-сайтов, становится все более важным, как достичь целей высокой доступности, масштабируемости, масштабируемости и безопасности веб-сайтов. Чтобы решить такой ряд проблем, архитектура крупных веб-сайтов также постоянно развивается. Чтобы улучшить архитектуру высокой доступности крупных веб-сайтов, необходимо упомянуть распределенные. В этой статье кратко представлена концепция распределенных систем, характеристики распределенных систем, часто используемые распределенные решения и разница между распределенными и кластерными системами.
1. Централизованная система
Прежде чем узнать о распределенной, давайте сначала разберемся, как выглядит соответствующая централизованная система.
Централизованную систему можно описать одним предложением: хост с несколькими терминалами. Терминал не имеет возможности обработки данных и отвечает только за ввод и вывод данных. Операции, хранение и т. д. выполняются на хосте. Большинство современных банковских систем являются такими централизованными системами, кроме того, они также распределены по крупным предприятиям, научно-исследовательским подразделениям, вооруженным силам и правительству. Централизованные системы, в основном популярные в прошлом веке.
Самая большая особенность централизованной системы заключается в том, что структура развертывания очень проста, а нижний уровень обычно использует дорогие мейнфреймы, приобретенные у IBM, HP и других производителей. Следовательно, нет необходимости рассматривать, как развернуть сервисы на нескольких узлах, и нет необходимости рассматривать проблему распределенного взаимодействия между узлами. Однако из-за развертывания на одной машине. Это может привести к большим и сложным системам, сложным в обслуживании, единой точке отказа (отказ одной точки повлияет на всю систему или сеть, что приведет к параличу всей системы или сети), плохой масштабируемости и другим проблемам. проблемы.
2. Распределенная система
В книге «Концепции и проектирование распределенных систем» даны следующие определения распределенных систем:
Распределенная система — это система, в которой аппаратные или программные компоненты распределены по разным сетевым компьютерам и взаимодействуют друг с другом только посредством передачи сообщений.
Проще говоря, это набор независимых компьютеров, которые предоставляют услуги внешнему миру, но для пользователей системы это похоже на компьютер, предоставляющий услуги. Распределенный означает, что больше обычных компьютеров (по сравнению с дорогими мейнфреймами) можно использовать для формирования распределенного кластера для предоставления внешних услуг. Чем больше компьютеров, тем больше ЦП, памяти, ресурсов хранения и т. д., и тем больший одновременный доступ можно обработать.
Из концепции распределенной системы мы знаем, что связь и координация между различными узлами в основном осуществляется через сеть, поэтому ограничений на пространство компьютеров в распределенных системах практически нет, эти компьютеры могут быть размещены в разных шкафах, а Кроме того, он может быть развернут в разных компьютерных залах, может быть в разных городах и даже может быть распространен в разных странах и регионах для крупных веб-сайтов. Однако, как бы она ни распределялась в пространстве, стандартная распределенная система должна обладать следующими основными характеристиками:
распределение
Несколько компьютеров в распределенной системе могут быть распределены в пространстве случайным образом.Между несколькими компьютерами в системе нет ведущего или ведомого, то есть нет ведущего, управляющего всей системой, и нет контролируемых ведомых.
прозрачность
Системные ресурсы являются общими для всех компьютеров. Пользователь каждого компьютера может не только использовать ресурсы этой машины, но и использовать ресурсы (включая ЦП, файлы, принтеры и т. д.) других компьютеров в распределенной системе.
личность
Несколько компьютеров в системе могут взаимодействовать друг с другом для выполнения общей задачи, или программа может быть распределена и запущена на нескольких компьютерах параллельно.
коммуникация
Любые два компьютера в системе могут обмениваться информацией посредством связи.
По сравнению с централизованными системами распределенные системы более экономичны, имеют более высокую вычислительную мощность, более высокую надежность и хорошую масштабируемость. Однако, хотя распределенное решение решает проблему высокой параллелизма веб-сайта, оно также создает некоторые другие проблемы. Во-первых, необходимым условием распространения является сеть, которая может оказывать определенное влияние на производительность и даже пропускную способность сервиса. Во-вторых, чем больше серверов в кластере, тем выше вероятность простоя серверов. Кроме того, поскольку служба распределена и развернута в кластере, запрос пользователя будет приходиться только на одну из машин, поэтому при неправильной обработке легко вызвать проблемы с согласованностью данных.
Часто используемые распределенные решения
Распределенные приложения и службы
Уровни и сегменты приложений и служб, а также развертывание модулей приложений и служб распределенным образом. Это может не только улучшить возможности параллельного доступа, уменьшить количество подключений к базе данных и потребление ресурсов, но также позволить различным приложениям повторно использовать общие службы, упрощая расширение бизнеса.
Распределенные статические ресурсы
Распределенное развертывание статических ресурсов, таких как JS, CSS, изображения и другие ресурсы веб-сайта, может снизить нагрузку на сервер приложений и повысить скорость доступа.
Распределенные данные и хранилище
Большим веб-сайтам часто необходимо обрабатывать огромные объемы данных, и один компьютер часто не может предоставить достаточно памяти для распределенного хранения этих данных.
Распределенных вычислений
С развитием вычислительной техники для выполнения некоторых приложений требуется огромная вычислительная мощность, а при использовании централизованных вычислений это займет много времени. Распределенные вычисления разбивают приложение на множество мелких частей и распределяют их по нескольким компьютерам для обработки. Это может сэкономить общее время вычислений и значительно повысить эффективность вычислений.
Распределенные и кластеризованные
распределенныйзначит внесколько разных серверовразвертывание вразличные сервисные модули, через удаленный вызов для совместной работы для предоставления внешних услуг.
кластерзначит внесколько разных серверовразвертывание вТо же приложение или сервисный модуль, сформировать кластер и предоставлять внешние услуги через оборудование балансировки нагрузки.