В 1994 Питер Дейч сформулировал семь заблуждений о распределенных вычислениях, позже, в 1997, Джеймс Гослинг добавил восьмое. Это типичные ошибки, которые допускают специалисты - новички в разработке распределенных систем.
В википедии об этих заблуждениях есть статья Fallacies of Distributed Computing с ссылками на подробные объяснения. А я, как обычно, изложу их покороче.
- Сеть надежна
Всё время что-то ломается. Электричество выключается, сетевые провода обрываются, софт глючит. - Латентность нулевая
Даже если пропускная способность вашей сети большая, ей нужно какое-то время, чтобы раскочегариться. Поэтому ваше прекрасное плавное AJAX приложение надо тестировать не только в корпоративной сетке. - Пропускная способность бесконечна
Несмотря на то, что пропускная способность растет очень быстро, мы всегда найдем, чем ее загрузить: богатые интерфейсы, IP-телефония и интересные видео высокого качества. - Сеть безопасна
Хакеры не дремлют! Повсюду малварь и DDOS атаки. - Топология никогда не меняется
Появляются новые устройства, отключаются старые. В случае мобильных устройств топология меняется постоянно. Так что никогда не стоит думать, что передаваемые данные всегда будут ходить одним и тем же путем. - Администратор всегда только один
Когда в разработке задействованы больше чем одна компания, а проблема где-то на стыке, решить ее бывает несколько сложнее. - Цена передачи данных нулевая
Компьютеры, роутеры, пропускная способность и люди, которые это все обслуживают, стоят денег. - Сеть однородна
В сети работают устройства с разными операционными системами, все время появляются новые - тут опять можно вспомнить про мобильные устройства.
9 коммент.:
Сложно представить что в наше время даже у новичков могут быть например 2, 3, 4 и 7 заблуждения. В 90-х то понятно наивных романтиков было много, но сейчас когда есть куча публичных историй о наступании на различные грабли и ещё большая куча описаний (с разной детализацией конечно) архитектуры различных распределенных систем - сильно сомневаюсь.
Алена, почему в Bing'е производительные части системы программируют на C++, а не .NET (удивительно, что MS не использует свою технологию в своих проектах на 100%)? Это части системы, которые остались исторически и будут заменены на .NET или у C++ есть какие-то преимущества в таких задачах, независимо от унаследованного кода? Возможно, причина совсем иная?
Самое большое заблуждение о распределенных вычисления, это когда думают, что каждый узел сети получит сообщения в одном и том же порядке, даже если транспорт абсолютно надежен. Отсюда возникают всякие atomic broadcast протоколы и алгоритмы консенсуса.
> Сложно представить что в наше время даже у новичков могут быть например 2 ... заблуждения
К сожалению такие не только существуют, но и встречаются в крупных компаниях =(
"Сложно представить что в наше время даже у новичков могут быть например 2, 3, 4 и 7 заблуждения."
Не скажу за всех, но насчет 7 точно, мне трудно даже прикинуть стоимость пересылки двух байтов.
Лаврентий Палыч
Сложно представить что в наше время даже у новичков могут быть например 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.
8 пункт сводится к разерам экранов при предоставлении интерфейса в html.
не только :)
Отправить комментарий