Веб-сервис бронирования билетов (с сохранением состояния) при загрузке Spring

Мне нужен какой-то веб-сервис с отслеживанием состояния (скажем, бронирование билетов за 5 шагов 1) выберите... 5) заплатить) и хочу реализовать его с помощью среды Spring (загрузки)

гуглить

весенний веб-сервис

можно найти множество примеров веб-сервисов RESTful... но согласно манифесту REST и многим статьям/ответам (т.е. Закрепленный сеанс для вызовов Rest API)

Клиент REST предназначен для вызова REST API, а REST API должны быть без состояния.

Statefulness вредит масштабируемости

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

Итак, я вижу несколько способов преодолеть это:

  1. Создайте веб-службу RESTful в Spring Boot и добавьте к ней сеанс и сохраните на нем состояние, а также добавьте балансировщик нагрузки липкого сеанса для поддержания масштабируемости (это сложнее, чем подход без сохранения состояния, но выполнимый). Да, это не будет настоящим сервисом RESTful, но он будет работать.
  2. Создайте настоящую службу RESTful без сохранения состояния, сохраните состояние на уровне

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

  1. состояние поддерживается на стороне клиента, а не на сервере. Итак, один из способов, который я предлагаю, заключается в том, что вы можете использовать файлы cookie для хранения вашего состояния и временных данных.
  2. Используйте какую-нибудь богатую инфраструктуру на стороне клиента, такую ​​​​как angular или react (я не очень хорош в этом, но считаю, что в этих фреймворках есть возможность сохранить состояние), хотя я думаю, что в любом случае файл cookie используется для этой цели, так что это почти то же самое, что и 3)
  3. Используйте Spring + SOAP. Мыло может поддерживать состояние, но я думаю, что этот способ устарел, и современные недавно созданные приложения с нуля не должны использовать SOAP.
  4. Не используйте Spring Framework для этого проекта, но используйте Front end framework (упомянутый в 4) + Node.js (в любом случае он будет с отслеживанием состояния)

Так какой подход лучше выбрать?


person J.J. Beam    schedule 20.02.2019    source источник


Ответы (1)


Поскольку ваш сервис REST

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

вы должны хранить состояние в базе данных или распределенном кеше, таком как Redis.

Вам нужно будет передавать сеансовый ключ или ссылку на бронирование в каждом запросе. Например в шапке.

person Simon Martinelli    schedule 20.02.2019