【发布时间】:2019-07-13 19:32:20
【问题描述】:
我需要一些有状态的 Web 服务(假设门票预订分 5 个步骤 1)选择 ...5)支付)并希望使用 Spring(引导)框架来实现它
谷歌搜索
春季网络服务
可以找到大量 RESTful Web 服务示例...但根据 REST 清单和许多文章/答案(即Sticky Session for Rest API Calls)
REST 客户端是用来调用 REST API 的,而 REST API 应该是无状态的
有状态会损害可扩展性
由于具有出色的嵌入式和自动配置库,在 Spring Boot 中创建 RESTful Web 服务非常容易,我不想拒绝它。
所以我看到了一些克服这个问题的方法:
- 在 Spring Boot 中创建 RESTful Web 服务并添加到该会话并在其上存储状态,并添加粘性会话负载均衡器以保持可伸缩性(这比无状态方法更困难但可行)。是的,它不会是真正的 RESTful 服务,但它会工作
- 创建 true 无状态 RESTful 服务,将状态保持在
您的代码可以查询临时“temp_transaction”数据库表以确定用户是否正在预订,例如,特定座位。
- 在客户端而不是在服务器上维护的状态。所以我建议的一种方法是您可以使用 cookie 来存储您的状态和临时数据
- 使用一些富客户端框架,如 angular 或 react(我在这方面做得不好,但相信有可能在这些框架中保持状态呈现)虽然我认为无论如何 cookie 用于这些目的,所以它几乎与 3 相同)
- 使用 Spring + SOAP。 Soap 可以维护状态,但我认为这种方式已经过时,从头开始创建的现代应用程序不应该使用 SOAP
- 此项目不要使用 spring 框架,而是使用前端框架(在 4 中提到)+ Node.js(无论如何它将是有状态的)
那么选择哪种方法更好?
【问题讨论】:
标签: java spring web-services spring-boot stateful