user-service和auth-service在微服务架构中的通信

Communication between user-service and auth-service in microservice architecture

场景:

这是我的微服务应用程序的登录场景:

  1. 用户输入他的phone号码
  2. 将发送验证码
  3. 用户必须发送收到的代码进行验证
  4. 用户必须输入密码
  5. 将收到一个 JWT 令牌

REST 实现

为了实现给定的场景,我创建了三个服务:auth、sms 和 user。从我的角度来看,我认为从 user-service 处理发送验证码和生成 JWT 令牌的请求更好。以下是我的实施细节:

问题

user<->auth 和 user<->sms 服务之间是否有正确的通信?

我认为您在服务之间划定界限的方式在任何情况下都不是问题。 我可以在这里看到一些优点和缺点

拥有单独的 SMS 服务,即使在其他情况下也可以使用它,例如向用户发送其他类型的通知,如果您想更改 SMS 提供商,它会很容易,但该服务应该是独立的(使用消息代理进行通信)。

用户服务完全没问题,但你应该知道每次对另一个服务的新 HTTP 调用都会创建 "Latency"(你应该考虑到这一点),就像在这种情况下,当一个新的 http 调用是用于发布令牌。

当您有一个服务调用另一个服务而不是引入耦合时。在我看来,如果你不使用任何第三方工具来处理令牌,而不是我认为你应该在同一个微服务中同时拥有令牌处理和用户,我认为这样你就有了更好的限界上下文,它是更容易 运行 加入,因为这些数据将在同一个数据库中。

如果您使用第三方工具来处理令牌,则可以将其放在不同的服务中,因为这样您将创建抽象并且将来可以轻松更改工具。

注意事项

确保每个微服务都有自己的数据库,并且您不会在该服务所属的上下文之外直接访问任何其他数据库。