понедельник, августа 22, 2011

Восемь заблуждений о распределенных вычислениях

В 1994 Питер Дейч сформулировал семь заблуждений о распределенных вычислениях, позже, в 1997, Джеймс Гослинг добавил восьмое. Это типичные ошибки, которые допускают специалисты - новички в разработке распределенных систем.
В википедии об этих заблуждениях есть статья Fallacies of Distributed Computing с ссылками на подробные объяснения. А я, как обычно, изложу их покороче.


  1. Сеть надежна
    Всё время что-то ломается. Электричество выключается, сетевые провода обрываются, софт глючит.
  2. Латентность нулевая
    Даже если пропускная способность вашей сети большая, ей нужно какое-то время, чтобы раскочегариться. Поэтому ваше прекрасное плавное AJAX приложение надо тестировать не только в корпоративной сетке.
  3. Пропускная способность бесконечна
    Несмотря на то, что пропускная способность растет очень быстро, мы всегда найдем, чем ее загрузить: богатые интерфейсы, IP-телефония и интересные видео высокого качества.
  4. Сеть безопасна
    Хакеры не дремлют! Повсюду малварь и DDOS атаки.
  5. Топология никогда не меняется
    Появляются новые устройства, отключаются старые. В случае мобильных устройств топология меняется постоянно. Так что никогда не стоит думать, что передаваемые данные всегда будут ходить одним и тем же путем.
  6. Администратор всегда только один
    Когда в разработке задействованы больше чем одна компания, а проблема где-то на стыке, решить ее бывает несколько сложнее.
  7. Цена передачи данных нулевая
    Компьютеры, роутеры, пропускная способность и люди, которые это все обслуживают, стоят денег.
  8. Сеть однородна
    В сети работают устройства с разными операционными системами, все время появляются новые - тут опять можно вспомнить про мобильные устройства.

9 коммент.:

Лаврентий Палыч комментирует...

Сложно представить что в наше время даже у новичков могут быть например 2, 3, 4 и 7 заблуждения. В 90-х то понятно наивных романтиков было много, но сейчас когда есть куча публичных историй о наступании на различные грабли и ещё большая куча описаний (с разной детализацией конечно) архитектуры различных распределенных систем - сильно сомневаюсь.

Леша Сырников комментирует...

Алена, почему в Bing'е производительные части системы программируют на C++, а не .NET (удивительно, что MS не использует свою технологию в своих проектах на 100%)? Это части системы, которые остались исторически и будут заменены на .NET или у C++ есть какие-то преимущества в таких задачах, независимо от унаследованного кода? Возможно, причина совсем иная?

Lazin комментирует...

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

svetasmirnova комментирует...

> Сложно представить что в наше время даже у новичков могут быть например 2 ... заблуждения

К сожалению такие не только существуют, но и встречаются в крупных компаниях =(

Анонимный комментирует...

"Сложно представить что в наше время даже у новичков могут быть например 2, 3, 4 и 7 заблуждения."

Не скажу за всех, но насчет 7 точно, мне трудно даже прикинуть стоимость пересылки двух байтов.

Alena комментирует...

Лаврентий Палыч

Сложно представить что в наше время даже у новичков могут быть например 2, 3, 4 и 7 заблуждения.

Новички всегда одинаковые, от времени это не зависит :-)

Леша Сырников
Алена, почему в Bing'е производительные части системы программируют на C++, а не .NET (удивительно, что MS не использует свою технологию в своих проектах на 100%)? Это части системы, которые остались исторически и будут заменены на .NET или у C++ есть какие-то преимущества в таких задачах, независимо от унаследованного кода? Возможно, причина совсем иная?

Я пишу и на С++, и на C#. Почему что-то на одном языке написано, что-то на другом - я не знаю. Надо будет спросить что ли...

Евгений Охотников комментирует...

Странно, но про "Fallacies of Distributed Computing" раньше не слышал. В свое время почти все это читал в другой работе 1994-го года A Note on Distributed Computing (Ann Wollrath, Geoff Wyant, Jim Waldo and Samuel C. Kendall). Но интереснее было затем найти еще более раннюю работу A Critique of the Remote Procedure Call Paradigm (Andrew S. Tanenbaum, Robbert van Renesse) аж от 1988-го года с почти такой же критикой механизмов RPC.

Анонимный комментирует...

8 пункт сводится к разерам экранов при предоставлении интерфейса в html.

L. комментирует...

8 пункт сводится к разерам экранов при предоставлении интерфейса в html.

не только :)