В свете последних технологических изменений и достижений распределенные системы становятся все более популярными. Многие ведущие компании создали сложные распределенные системы для обработки миллиардов запросов и обновления без простоев.
Распределенные проекты могут показаться сложными и сложными для создания, но в 2021 году они становятся все более важными для обеспечения экспоненциального масштабирования. Начиная сборку, важно оставить место для базовой, высокодоступной и масштабируемой распределенной системы.
Когда дело доходит до распределенных систем, есть много чего. Итак, сегодня мы просто познакомим вас с распределенными системами. Мы объясним различные категории, проблемы дизайна и соображения, которые необходимо учесть.
Что такое распределенная система?
На базовом уровне распределенная система — это совокупность компьютеров, которые работают вместе, образуя единый компьютер для конечного пользователя. Все эти распределенные машины имеют одно общее состояние и работают одновременно.
Они могут выходить из строя независимо, не повреждая всю систему, как и микросервисы. Эти взаимозависимые автономные компьютеры связаны сетью, чтобы легко обмениваться информацией, общаться и обмениваться информацией.
Примечание. Распределенные системы должны иметь общую сеть для подключения своих компонентов, которые могут быть подключены с помощью IP-адреса или даже физических кабелей.
В отличие от традиционных баз данных, которые хранятся на одной машине, в распределенной системе пользователь должен иметь возможность связываться с любой машиной, не зная, что это только одна машина. Большинство приложений сегодня используют ту или иную форму распределенной базы данных и должны учитывать их однородный или неоднородный характер.
В однородной распределенной базе данных каждая система использует модель данных, а также систему управления базой данных и модель данных. Как правило, ими легче управлять, добавляя узлы. С другой стороны, гетерогенные базы данных позволяют иметь несколько моделей данных или различные системы управления базами данных, использующие шлюзы для трансляции данных между узлами.
Как правило, существует три типа распределенных вычислительных систем со следующими целями:
- Распределенные информационные системы: распределяйте информацию по разным серверам с помощью нескольких моделей связи.
- Распределенные всеобъемлющие системы: используйте встроенные компьютерные устройства (например, мониторы ЭКГ, датчики, мобильные устройства)
- А также распределенные вычислительные системы: компьютеры в сети обмениваются данными посредством передачи сообщений.
Примечание. Важной частью распределенных систем является теорема CAP, которая утверждает, что распределенное хранилище данных не может одновременно быть согласованным, доступным и устойчивым к разделам.
Децентрализованные и распределенные
Существует довольно много споров о разнице между децентрализованными и распределенными системами. Децентрализованная система по существу распределена на техническом уровне, но обычно децентрализованная система не принадлежит одному источнику.
Управлять децентрализованной системой сложнее, поскольку вы не можете управлять всеми участниками, в отличие от распределенного единого курса, где все узлы принадлежат одной команде / компании.
Преимущества распределенной системы
Распределенные системы могут быть сложными в развертывании и обслуживании, но такая конструкция дает много преимуществ. Давайте рассмотрим некоторые из этих льгот.
- Масштабирование: распределенная система позволяет масштабироваться по горизонтали, чтобы вы могли учитывать больший трафик.
- Модульный рост: практически нет ограничений на масштабирование.
- Отказоустойчивость: распределенные системы более отказоустойчивы, чем отдельная машина.
- Рентабельность: начальная стоимость выше, чем у традиционной системы, но благодаря своей масштабируемости они быстро становятся более рентабельными.
- Низкая задержка: пользователи могут иметь узел в нескольких местах, поэтому трафик попадет в узел в шкафу.
- Эффективность: распределенные системы разбивают сложные данные на более мелкие части.
- Параллелизм: распределенные системы могут быть разработаны для параллелизма, когда несколько процессоров разделяют сложную задачу на части.
Масштабируемость — самое большое преимущество распределенных систем. Горизонтальное масштабирование означает добавление дополнительных серверов в пул ресурсов. Вертикальное масштабирование означает масштабирование за счет увеличения мощности (ЦП, ОЗУ, хранилища и т. Д.) На ваших существующих серверах.
Горизонтальное масштабирование легче динамически масштабировать, а вертикальное масштабирование ограничено мощностью одного сервера.
Хорошими примерами горизонтального масштабирования являются Cassandra и MongoDB. Они упрощают горизонтальное масштабирование за счет добавления дополнительных машин. Примером вертикального масштабирования является MySQL, когда вы масштабируете, переключаясь с меньших компьютеров на большие.
Проблемы проектирования с распределенными системами
Несмотря на то, что распределенные системы имеют много преимуществ, важно также отметить проблемы проектирования, которые могут возникнуть. Ниже мы кратко изложили основные соображения по поводу дизайна.
- Обработка сбоев: Обработка сбоев может быть затруднена в распределенных системах, потому что некоторые компоненты выходят из строя, а другие продолжают работать. Это часто может служить преимуществом для предотвращения крупномасштабных сбоев, но также приводит к усложнению устранения неполадок и отладки.
- Параллелизм: распространенная проблема возникает, когда несколько клиентов одновременно пытаются получить доступ к общему ресурсу. Вы должны убедиться, что все ресурсы безопасны в параллельной среде.
- Проблемы безопасности: безопасность данных и совместное использование увеличивают риски в распределенных компьютерных системах. Сеть должна быть защищена, и пользователи должны иметь возможность безопасно получать доступ к реплицированным данным в нескольких местах.
- Более высокие начальные затраты на инфраструктуру: начальные затраты на развертывание распределенной системы могут быть выше, чем для одиночной системы. Эта цена включает основные проблемы настройки сети, такие как передача, высокая нагрузка и потеря информации.
Распределенные системы нелегко установить и запустить, и часто эта мощная технология оказывается слишком «избыточной» для многих систем. Распространение данных, обеспечивающих выполнение различных требований в непредвиденных обстоятельствах, сопряжено с множеством проблем.
Точно так же ошибки труднее обнаружить в системах, которые разбросаны по разным местам.
Облако против распределенных систем
Облачные вычисления и распределенные системы разные, но в них используются похожие концепции. Распределенные вычисления используют распределенные системы, распределяя задачи по множеству машин. С другой стороны, облачные вычисления используют серверы, размещенные в сети, для хранения, обработки и управления данными.
Распределенные вычисления направлены на создание совместного использования ресурсов и обеспечение размера и географической масштабируемости. Облачные вычисления — это предоставление среды по запросу с использованием прозрачности, мониторинга и безопасности.
По сравнению с распределенными системами облачные вычисления имеют следующие преимущества:
- Экономически эффективным
- Доступ к мировому рынку
- Инкапсулированное управление изменениями
- Доступ к хранилищу, серверам и базам данных в Интернете
Однако облачные вычисления, возможно, менее гибки, чем распределенные вычисления, поскольку для построения системы вы полагаетесь на другие сервисы и технологии. Это дает вам меньше контроля.
Такие приоритеты, как балансировка нагрузки, репликация, автоматическое масштабирование и автоматическое резервное копирование. Могут быть упрощены с помощью облачных вычислений. Инструменты создания облака, такие как Docker, Amazon Web Services (AWS), Google Cloud Services или Azure, позволяют быстро создавать такие системы, и многие команды предпочитают создавать распределенные системы вместе с этими технологиями.
Примеры распределенных систем
Распределенные системы используются во всех сферах, от электронных банковских систем до сенсорных сетей и многопользовательских онлайн-игр. Многие организации используют распределенные системы для поддержки сетевых служб доставки контента.
В сфере здравоохранения распределенные системы используются для хранения и доступа, а также для телемедицины. В сфере финансов и торговли многие сайты онлайн-покупок используют распределенные системы для онлайн-платежей или системы распространения информации в финансовой торговле.
Распределенные системы также используются для транспорта в таких технологиях, как GPS, системы поиска маршрутов и системы управления дорожным движением. Сотовые сети также являются примерами распределенных сетевых систем из-за их базовой станции.
Google использует сложную и изощренную инфраструктуру распределенной системы для своих возможностей поиска. Некоторые говорят, что это самая сложная распределенная система на сегодняшний день.