Я много слышу об этом термине «Изящная деградация».
Например ,
"An application server should gracefully degrage when it is under heavy load "
"Graceful degradation of user interfaces.... "
Термин выглядит как абстрактная вещь для меня. Есть конкретный пример того, что это значит?
terminology
Винот Кумар СМ
источник
источник
Ответы:
Вот некоторые примеры:
источник
Приложения, которые имеют «ухудшенный» режим, обычно предлагают доступ к ограниченному набору функций из-за внутренней или внешней проблемы. Например, представьте, что ваше приложение подключается к двум разным источникам данных. Если один из них завершится неудачно, он все равно сможет продолжить работу, но отключит все визуальные (или / и внутренние функции), связанные с недоступным ресурсом.
Конкретный пример: у вашего приложения есть два источника данных, в одном из которых вы храните людей, а в другом - учетные записи. Даже в случае сбоя базы данных учетных записей, если приложение работает в ухудшенном режиме, вы все равно сможете создавать новых людей, хотя и не взаимодействовать с их учетными записями.
Что касается пользовательского интерфейса, это обычно означает, что вы четко указываете пользователю, что некоторые функции отключены, и отображаете некоторое предупреждающее сообщение, чтобы он не остался в неведении относительно того, почему что-то недоступно.
Также есть запись в Википедии, посвященная отказоустойчивым системам .
источник
С развитием технологий у нас всегда есть изменения, внедряющиеся в приложение, которое может поддерживаться не всеми целевыми аудиториями. В таких сценариях мы сталкиваемся с постепенной деградацией, которая подражает тому, что мы создаем для наилучшего из доступных, но у нас также есть отказоустойчивый для тех, кто не обновил или их система может не поддерживать.
Одним из основных примеров является
<img>
тег, который имеетalt
атрибут, который полезен в случаях, когда изображения заблокированы или отключены, теперь они дают некоторый значимый контекст для изображений (конечно, только если мы укажем).Ну и еще один пример, который я могу вспомнить, - это таблицы стилей в случае ошибки или недоступности, которую браузер предоставляет общую версию для отображения / отображения страницы.
Теперь, когда вы упомянули тяжелую нагрузку, вы должны тщательно наметить план, как это сделать, если ваши попадания пересекают порог, вы отключаете определенные функции или приостанавливаете некоторые услуги, которые не являются критическими и дают вам передышку. Все это поможет вам настроить постепенное снижение производительности, чтобы пользователь знал, что из-за того, что x может потребоваться некоторое время для ответа сервера, или служба x будет недоступна в течение часа или около того
источник
Это означает, что, поскольку входы и состояние превышают проектные пределы, выходы остаются максимально разумными и надежными.
Если это сервер, предназначенный для обработки 100 одновременных соединений, он не дает сбоя и не начинает выдавать сумасшедшие результаты при 101 или даже 150 соединениях - он замедляет или, возможно, сбрасывает несколько соединений, но в основном продолжает работать. Если это база данных, предназначенная для обработки 1 миллиарда записей, она внезапно не замедлится до неработоспособного состояния в 1,01 миллиарда.
источник
Если у вас нет графической системы (например, не запущен сервер X11), ваша программа должна по крайней мере предоставить CLI, например, ncurses.
vi имеет тупой режим, в котором он ведет себя как ex, если у терминала слишком мало функций.
источник
При создании веб-приложений происходит постепенная деградация, когда ваш сайт использует JavaScript, Flash или аналогичные методы, которые пользователь не использует или отключил.
Тогда вам все же следует предоставить некоторые базовые функции только с помощью HTML или хотя бы сообщение о том, что сайт не работает должным образом.
источник