Симметричная и асимметричная архитектуры

Завершено

Третьим аспектом разработки является одна из организационных структур. Разработчик приложений обычно организует распределенную программу в виде ассиметричной архитектуры главный — подчиненный или симметричной одноранговой архитектуры, как показано на рис. 12. Другие организации, например гибридные, могут быть подходящими в особых обстоятельствах1. Для целей этого урока мы рассматриваем только организации "главный — подчиненный" и одноранговые организации.

Асимметричная организация с моделью "главный — подчиненный"

В организации с моделью "главный — подчиненный" основной процесс, называемый главным, обрабатывает всю логику и механизмы управления, а все остальные процессы считаются подчиненными. Таким образом, взаимодействие между процессами является асимметричным: двунаправленные подключения позволяют главному процессу взаимодействовать с каждым подчиненным, а взаимосвязи между двумя подчиненными не допускаются (см. рис. 12 (а)). В этой ситуации главный процесс должен отслеживать сетевое расположение каждого подчиненного в так называемой структуре метаданных и сделать так, чтобы каждый подчиненный мог всегда определять и находить главный процесс.

(a) A primary-subordinate organization. (b) A peer-to-peer organization. The primary in such an organization is optional (usually employed for monitoring the system and/or injecting administrative commands).

Рис. 12. (а) Организация с моделью "главный — подчиненный". (б) Одноранговая организация. В такой организации главный процесс является необязательным (обычно используется для мониторинга системы и (или) внедрения административных команд).

В асимметричных организациях главный процесс может распределять работу между подчиненными, используя один из двух следующих протоколов:

  • На основе push-уведомлений: эта стратегия назначает работу подчиненным в одностороннем порядке без их запроса. Очевидно, что такая ситуация позволяет главному процессу справедливо применять ограничения в отношении подчиненных путем равномерного распределения работы. С другой стороны, такая организация может привести к перегрузке медленно работающих или неисправных подчиненных, которые не в состоянии справиться с работой. Следовательно, может возникнуть неравномерное распределение нагрузки, которое обычно является причиной снижения производительности. Тем не менее главный процесс может реализовывать продуманные стратегии. В частности, он может назначать работу тогда и только тогда, когда считает, что подчиненный готов ее выполнить. Чтобы эта тактика сработала, главный процесс должен постоянно следить за всеми подчиненными и применять некоторую логику (обычно сложную) для точного определения доступных подчиненных. Чтобы сохранять справедливый характер распределений и повышать производительности, главный процесс должен также принимать решение об объеме назначаемой работы. В облаках вероятность появления сбойных и медленных процессов возрастает из-за разнородности, непредсказуемости производительности и масштабируемости. Эти ограничения могут привести к неэффективному использованию push-протокола в облаке.
  • На основе вытягивания: эта стратегия, с другой стороны, требует подчиненных запрашивать назначение работы. Этот протокол значительно упрощает процесс и позволяет избежать неравномерного распределения нагрузки, так как принятие решения о том, готов конкретный подчиненный или нет, делегируется самому подчиненному. Тем не менее главный процесс по-прежнему должен следить за подчиненными, как правило, чтобы отслеживать ход выполнения ими задач и (или) применять механизмы отказоустойчивости (например, для эффективного устранения медленно работающих и отказавших задач, обычно присутствующих в масштабных облаках). В Hadoop MapReduce и Pregel используется pull-протокол.

В связи с этим отметим, что недостатком организации с моделью "главный — подчиненный" является возможность возникновения единой точки отказа (SPOF). В частности, если происходит сбой главного процесса, вся распределенная программа переходит в нерабочее состояние. Более того, функциональности центрального (главного) процесса по контролю и управлению всеми аспектами может быть недостаточно при большом количестве подчиненных процессов, если только не применяются эффективные стратегии для уменьшения конкуренции за обращение к главному процессу (например, кэширование метаданных в подчиненных процессах, чтобы исключить обращение к главному процессу при каждом запросе). В отличие от этого, использование организации с моделью "главный — подчиненный" упрощает принятие решений (например, разрешая запись с определенными общими данными). В частности, главный процесс всегда является единственной сущностью, которая управляет всеми задачами и может самостоятельно принимать любые решения. Эта простота исключает использование механизмов голосования 3, 1, 2, которые обычно необходимы, когда решения должна принимать только группа сущностей (а не одна сущность). Основная идея механизмов голосования заключается в том, чтобы задача запрашивала и получала разрешение на выполнение определенного действия, по крайней мере, у половины задач плюс одна задача (у большинства). Механизмы голосования обычно усложняют реализаций распределенных программ.

Симметричная одноранговая организация

В симметричных организациях все задачи равны,поэтому логика, управление и работа распределяются между ними равномерно. Говоря конкретно, каждая задача может напрямую взаимодействовать с другими задачами, не обращаясь к главному процессу (см. рис. 12 (б)). Допускается использование главного процесса, но только для таких целей, как мониторинг системы и (или) ввод административных команд. Другими словами, для правильного функционирования одноранговым задачам не требуется главный процесс. Более того, несмотря на то, что задачи взаимодействуют друг с другом, их работа может быть абсолютно независимой и даже несвязанной. Одноранговые организации позволяют избежать появления единых точек отказа и узких мест в пропускной способности, поэтому они, как правило, отличаются хорошей масштабируемостью и высоким уровнем отказоустойчивости. Однако принятие решений в одноранговых организациях должно осуществляться коллективно, обычно с помощью механизмов голосования. Как правило, это означает повышенную сложность реализации, а также более высокие издержки и задержки при обмене данными, особенно в крупномасштабных системах, таких как облако. На платформе GraphLab, которую мы рассмотрим позднее, используется одноранговая организация.


Ссылки

  1. A. S. Tanenbaum and M. V. Steen (October 12, 2006). Distributed Systems: Principles and Paradigms Prentice Hall, Second Edition
  2. R. H. Thomas (1979). A Majority Consensus Approach to Concurrency Control for Multiple Copy Databases ACM Transactions on Database Systems (TODS)
  3. D. K. Gifford (1979). Weighted Voting for Replicated Data In Proceedings of the Seventh ACM Symposium on Operating Systems Principles