В некоторых приложениях это полезно для образцовых ситуаций, в которых перестал работать сервер. Например, машина ломается и позже восстанавливается, или сетевая связь прерывается и позже восстанавливается. Этот раздел исследует способы смоделировать отказ сервера и состояния сервера.
Блоки сервера не имеют встроенных состояний, таким образом, можно разработать состояния в любом случае, который подходит для приложения. Некоторые примеры возможных состояний сервера находятся в этой таблице.
Сервер как канал связи | Сервер как машина | Сервер как человеческий процессор |
---|---|---|
Передача сообщения | Обработка части | Работа |
Соединенный, но бездействуют | Ожидание новой части, чтобы прибыть | Ожидание работы |
Несвязанный | 'off' | Не на дежурстве |
Содержание сообщения (незаконченная доступность места назначения) | Содержание части (незаконченная доступность следующего оператора) | Ожидание ресурса |
Установление связи | Нагревание | Подготовка начаться работает |
Для любого состояния, которое представляет неспособность сервера или отказ принять прибытие сущности даже при том, что сервер не обязательно полон, общая реализация включает блок Entity Gate, предшествующий серверу.
Логический элемент предотвращает доступ сущности к серверу каждый раз, когда сообщение контрольно-пропускной службы во входном порту во главе нулевых значений групповых переносов или отрицательных величин. Логика, которая создает управляющее сообщение, определяет, является ли сервер в состоянии отказа. Можно реализовать такую логику с помощью Функционального блока Simulink, с помощью блока Send сообщения, или с помощью графиков Stateflow® для перехода среди конечного числа состояний сервера.
Этот пример показывает экземпляр, в котором блок Entity Gate предшествует серверу. Пример не в частности о состоянии отказа, но идея управлять доступом к серверу подобна. Это моделирует стохастическим образом происходящий отказ, который длится некоторое количество времени.
Примечание: логический элемент препятствует тому, чтобы новые сущности прибыли в сервер, но не препятствует тому, чтобы текущая сущность завершила свой сервис. Если вы хотите извлечь текущую сущность с сервера после возникновения отказа, то можно использовать функцию вытеснения сервера, чтобы заменить текущую сущность на высокоприоритетную сущность 'заполнителя'.
Очередь сущности | Сервер сущности