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

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

гугление

spring web service

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

REST client is made to call REST API and REST APIs should be stateless

Statefulness harms scalability

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

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

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

temporary 'temp_transaction' database table which your code can consult to determine if a user is in the process of booking, say, a particular seat.

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

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
757
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Другие вопросы по теме