Классика баз данных - статьи

       

Высокий уровень доступности


Ко многим приложениям обработки потоков предъявляются требования высокого уровня доступности (high availability, HA) и устойчивой работы в режиме 7х24. Стандартные механизмы журнализации и восстановления после сбоев, применяемые в СУБД (см. например, [22]), непригодны в потоковом мире, поскольку привносят ряд ключевых проблем.

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

Очевидным альтернативным подходом для достижения высокого уровня доступности является использование методов, основанных на поддержке пар процессов в стиле Tandem [11]. Основная идея состоит в том, что в случае отказа приложение переключается (failover) на использование резервной машины, которая обычно функционирует в режиме «горячего резерва» («hot standby»), и продолжает свою работу после небольшой задержки. Этот подход позволяет избежать накладных расходов журнализации. В рассматриваемом здесь случае StreamBase отключает механизм журнализации в BerkeleyDB.

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

Содержание  Назад  Вперед