Как сервер REST может координировать доступ к общему ресурсу или «критическому разделу»? - PullRequest
0 голосов
/ 28 марта 2020

Есть пользовательский интерфейс, который отображает данные в редактируемой таблице о большом количестве торговых акций. Пользователь может редактировать любые данные акции. Сервер приложений - Spring Boot. Как можно обрабатывать одновременные правки в одной и той же акции?

(я полагаю, если исходный код является аналогом, тогда Git разрешает одновременные правки, но PVCS не разрешает).

С сохранением состояния сервер, можно было бы хранить карту ha sh <Stock Id, User Id> и иметь конечную точку wantsToEdit(Integer StockId). Хэш-карта должна быть синглтоном.

Каждый раз, когда пользователь пытается редактировать акцию (помещает курсор в поле пользовательского интерфейса), затем вызывается wantsToEdit(Integer StockId) и идентификатор пользователя добавляется на карту (hashmap.put(stockId,userId) ) поэтому сервер может отслеживать, кто что редактирует (и, возможно, запрещать одновременное редактирование).

Но может ли сервер REST без сохранения состояния, такой как Spring Boot, хранить хэш-карту, не имея базы данных в памяти?

1 Ответ

0 голосов
/ 28 марта 2020

HTTP 1.1 (и выше) поддерживает оптимистическую блокировку c с использованием Last-Modified и / или ETag заголовков, как определено в RF C 7232 .

Здесь сервер в основном отправляет определенную временную метку или га sh -значение контента с ответом, который клиент может использовать для запроса извлечения или обновления этого указанного c ресурса только в тех случаях, когда сервер все еще имеет ту же метку времени или значение ha sh, назначенное этому ресурсу. Если в то же время какой-либо другой клиент изменил этот ресурс, сервер должен вернуть другое значение метки времени / га sh для этого ресурса и, как следствие, предотвратить обновление этого ресурса.

Таким образом, я бы Рекомендуется использовать оптимистический c подход блокировки, как определено в RF C 7232, вместо использования произвольной блокировки на основе пользовательского интерфейса, которая может привести к ситуации тупиковой блокировки в некоторый момент.

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