Каковы различия между системами без гражданства и с состоянием и как они влияют на параллелизм? - PullRequest
59 голосов
/ 25 марта 2011

Объясните различия между системами без состояния и с состоянием и влиянием состояния на параллелизм.

Ответы [ 2 ]

75 голосов
/ 25 марта 2011

A система без сохранения состояния может отображаться как поле [чёрный?;)] где в любой момент времени значение выхода (ов) зависит только от значения входа (ов) [после определенного времени обработки]

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

С точки зрения параллельного программирования , система без состояния , при правильной реализации, может выполняться несколькими потоками / задачами одновременно без проблем параллелизма[в качестве примера рассмотрим реентерабельную функцию] Система с сохранением состояния потребует, чтобы несколько потоков исполнения имели доступ и обновляли внутреннее состояние системы эксклюзивным образом, следовательно, потребуется сериализация [синхронизация] точка.

43 голосов
/ 05 июля 2013

Сервер с состоянием сохраняет состояние между соединениями. Сервер без сохранения состояния не работает.

Итак, когда вы отправляете запрос на сервер с состоянием, он может создать какой-то объект соединения, который отслеживает, какую информацию вы запрашиваете. Когда вы отправляете другой запрос, этот запрос воздействует на состояние из предыдущего запроса. Таким образом, вы можете отправить запрос, чтобы «открыть» что-то. И тогда вы можете отправить запрос, чтобы «закрыть» его позже. В промежутке между двумя запросами эта вещь «открыта» на сервере.

Когда вы отправляете запрос на сервер без сохранения состояния, он не создает никаких объектов, которые отслеживают информацию относительно ваших запросов. Если вы «открываете» что-то на сервере, сервер вообще не сохраняет никакой информации о том, что у вас есть что-то открытое. Операция «закрыть» не имеет смысла, так как закрывать нечего.

HTTP и NFS - протоколы без сохранения состояния. Каждый запрос стоит сам по себе.

Иногда файлы cookie используются для добавления состояния в протокол без сохранения состояния. В HTTP (веб-страницы) сервер отправляет вам cookie, а затем браузер сохраняет состояние, только чтобы отправить его обратно на сервер при последующем запросе.

SMB - это протокол с отслеживанием состояния. Клиент может открыть файл на сервере, и сервер может запретить другим клиентам доступ к этому файлу, пока клиент не закроет его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...