【发布时间】:2020-07-04 02:21:37
【问题描述】:
想象一下密码恢复过程,包括三个步骤:
- 发送短信。用户进入电话。发送带有确认码的短信。我们 必须限制用户在一段时间内可以进行多少次 请求。
- 输入短信代码。用户输入确认码。我们必须 限制尝试次数。
- 设置新密码。
我们还必须确保这些步骤的正确顺序。这意味着用户不能在前两步未成功的情况下直接跳到第 3 步。
假设我们有简单的架构:
网关和登录服务,它实现了三个 API 方法,每个方法对应于每个密码恢复步骤过程。
问题是: 哪个服务必须实施这种有状态的限制?网关还是登录服务?
应该是网关,它将跟踪失败尝试的次数和其他上下文。这使得登录服务无状态。
或者可能是登录服务,所以如果架构发展并且会有另一个网关,则无需在另一个网关中复制相同的代码。
【问题讨论】:
标签: api microservices state stateless stateful