Основные характеристики распределенных систем

Основные характеристики распределенных систем

UniLecs

Ключевые характеристики распределенной системы включают:

  • Масштабируемость
  • Надежность
  • Доступность
  • Эффективность
  • Управляемость.

Давайте кратко рассмотрим их:

Масштабируемость

Масштабируемость - это возможность системы или процесса расти и управлять повышенным спросом. Системы необходимо масштабировать по многим причинам, таким как увеличение объема данных или увеличение объема работы, например, количества транзакций. При этом система должна масштабироваться без потери производительности.

Как правило, производительность системы (хоть она и спроектирована или заявлена как масштабируемая) снижается в зависимости от размера системы из-за затрат на управление или среду. Например, скорость сети может снизиться, потому что сервера, как правило, находятся далеко друг от друга. Также некоторые задачи могут быть не распределены либо из-за их особенностей, либо из-за некоторого недостатка в конструкции системы. В какой-то момент такие задачи ограничат ускорение, получаемое распределением. Масштабируемая архитектура позволяет избежать этой ситуации и пытается равномерно распределить нагрузку на все участвующие узлы.

Горизонтальное и вертикальное масштабирование

Горизонтальное масштабирование означает, что вы масштабируете, добавляя больше серверов в пул ресурсов, тогда как вертикальное масштабирование означает, что вы масштабируете, добавляя больше мощности (ЦП, ОЗУ, хранилище и т.д.) на существующий сервер.

С горизонтальным масштабированием часто легче динамически масштабировать, добавляя больше машин в существующий пул; вертикальное масштабирование обычно ограничивается емкостью одного сервера, а масштабирование сверх этой емкости часто приводит к простоям и имеет верхний предел.

Надежность 

Распределенная система считается надежной, если она продолжает функционировать, даже когда один или несколько ее программных или аппаратных компонентов выходят из строя. Надежность представляет собой одну из основных характеристик любой распределенной системы, поскольку в таких системах любая неисправная машина всегда может быть заменена другой работоспособной, обеспечивая выполнение запрошенной задачи.

В пример можно привести такие сервисы, как интернет магазины (AliExpress или Amazon), где требование надежности ключевое. Ни одна транзакция не должна отменяться из-за сбоя сервера, на котором она выполняется. Например, если пользователь добавил товар в корзину, система, как ожидается, не потеряет его. Надежная распределенная система достигает этого за счет избыточности как программных компонентов, так и данных. Если сервер, несущий корзину покупок пользователя, выходит из строя, его должен заменить другой сервер, имеющий точную копию корзины покупок.

Очевидно, что избыточность имеет свою стоимость, и надежная система должна оплачивать ее, чтобы достичь такой устойчивости услуг, устраняя каждую точку отказа.

Доступность

Доступность - это время, в течение которого система остается работоспособной для выполнения своей требуемой функции в определенный период. Можно сказать, что самолет, который может летать много часов в месяц без больших простоев, имеет высокую доступность. Доступность учитывает ремонтопригодность, время ремонта, доступность запчастей и другие логистические аспекты. Если самолет не обслуживается, он считается недоступным в течение этого времени.

Надежность - это доступность с течением времени, учитывая весь спектр возможных реальных условий. Самолет, способный безопасно преодолевать любую возможную погоду, более надежен, чем самолет, который уязвим к возможным условиям.

Надежность VS Доступность

Если система надежна, она доступна. Однако, если система доступна, то она не обязательно надежна. Другими словами, высокая надежность способствует высокой доступности, но можно достичь высокой доступности даже с ненадежным продуктом, минимизируя время ремонта и гарантируя, что запчасти всегда доступны, когда они необходимы. Давайте возьмем пример интернет-магазина розничной торговли, доступность которого составляет 99,99% в течение первых двух лет после его запуска. Однако система была запущена без какого-либо тестирования информационной безопасности. Клиенты довольны системой, но не понимают, что она не очень надежна, так как подвержена вероятным рискам. На третий год система переживает серию инцидентов информационной безопасности, которые внезапно приводят к крайне низкой доступности в течение продолжительных периодов времени. Это приводит к нанесению репутационного и финансового ущерба клиентам.

Эффективность

Обычно есть два критерия оценки эффективности: время отклика (или задержка), которое обозначает задержку для получения первого элемента, и пропускная способность, которая обозначает количество элементов, доставленных в данной единице времени (например, секунду). Эти два показателя соответствуют следующим удельным затратам:

  • Количество сообщений, отправленных глобально узлами системы независимо от размера сообщения.
  • Размер сообщений, представляющих объем обмена данными.

Сложность операций, поддерживаемых распределенными структурами данных (например, поиск конкретного ключа в распределенном индексе), можно охарактеризовать как функцию одной из этих единиц стоимости. Говоря обобщенно, анализ распределенной структуры с точки зрения «количества сообщений» слишком упрощен. Он игнорирует влияние многих аспектов, включая топологию сети, нагрузку на сеть и ее изменение, возможную неоднородность компонентов программного и аппаратного обеспечения, участвующих в обработке и маршрутизации данных, и т.д. Однако довольно сложно разработать точную стоимость модели, которая бы точно учитывала все эти факторы производительности; поэтому нам приходится жить с грубыми, но надежными оценками поведения системы.

Удобство обслуживания или управляемость

Другое важное соображение при проектировании распределенной системы - насколько с ней легко работать и как сложно ее поддерживать. Удобство обслуживания или управляемость - это простота и скорость, с которой система может быть обслужена (исправлена). Если время для исправления системы увеличивается, доступность уменьшается. Что касается управляемости, следует учитывать простоту диагностики и понимания проблем, когда они возникают, простоту создания обновлений или модификаций, а также простоту эксплуатации системы (т.е. работает ли она регулярно без сбоев или исключений).

Раннее обнаружение неисправностей поможет уменьшить или избежать простоев системы. Например, некоторые корпоративные системы могут автоматически вызывать сервисный центр (без вмешательства человека), когда система испытывает системный сбой.

Report Page