Моделируйте серверные Отказы

Состояния сервера

В некоторых приложениях полезно моделировать ситуации, в которых сервер отказывает. Например, машина выходит из строя и позже восстанавливается, или сетевое соединение прекращает работать, а позже восстанавливается. В этом разделе рассматриваются способы моделирования отказа сервера и состояния сервера.

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

Сервер как канал связиСервер как машинаСервер как человеческий процессор
Передающее сообщениеОбрабатывающая частьРабота
Подключено, но не работаетОжидание прибытия новой частиОжидание работы
Не связанныйПрочьБез заполнения
Holding message (ожидание доступности места назначения)Удерживающая часть (в ожидании наличия следующего оператора)Ожидание ресурса
Установление соединенияРазогревПодготовка к началу работы

Используйте ворота для реализации состояния отказа

Для любого состояния, которое представляет невозможность сервера или отказ от приема поступлений сущностей, хотя сервер не обязательно полон, общая реализация включает блок Entity Gate, предшествующий серверу.

Шлюз препятствует сущности доступу к серверу всякий раз, когда сообщение управления ключом в входе порту в верхней части блока содержит нули или отрицательные значения. Логика, которая создает управляющее сообщение, определяет, находится ли сервер в состоянии отказа. Можно реализовать такую логику с помощью блока Simulink Function, с помощью блока Message Send или с помощью графиков Stateflow ® для перехода среди конечного числа состояний сервера.

В этом примере показан образец, в котором блок Entity Gate предшествует серверу. Пример конкретно не о состоянии отказа, но идея управления доступом к серверу аналогична. Он моделирует стохастически возникающий отказ, который длится некоторое количество времени.

Примечание.Шлюз препятствует поступлению новых сущностей на сервер, но не препятствует завершению обслуживания текущей сущности. Если необходимо извлечь текущую сущность с сервера при вхождении отказа, можно использовать функцию прерывания сервера, чтобы заменить текущую сущность на высокоприоритетную сущность 'placeholder'.

См. также

|

Похожие примеры

Подробнее о