我应该如何处理 Jira 克隆应用程序中不同微服务之间的数据分离和模型使用?

问题描述 投票:0回答:1

我正在使用具有以下服务的微服务架构构建 Jira 克隆:

  1. 用户服务:管理用户相关操作。
  2. 任务服务:处理与任务相关的操作。
  3. 身份验证服务:管理身份验证。

我正在努力解决跨微服务的模型分离和数据访问问题。例如,当用户创建任务时,我需要更新用户的信息或获取用户详细信息。在这些情况下,我应该直接从 User Service 访问 User model 吗?如何遵循生产环境的最佳实践,高效且可扩展地处理一个微服务需要另一个微服务的数据或功能的情况?

我的技术堆栈包括: Nginx、MongoDB、SQL、Kafka、Docker、Redis、Node.js、Express 和 JWT。

请随时建议任何其他技术或技术以进行优化

node.js apache-kafka architecture microservices
1个回答
0
投票

因此,一般来说,微服务既昂贵又复杂,尤其是在处理这些领域分离问题时。 在走这条路之前,请确保您需要它们。 您可以使用域抽象层,而无需强分离服务的开销。

话虽这么说,在使用微服务时,您需要保持这些服务的内部强分离,这样您就不会意外地引入耦合。 它们的全部要点是,强大的解耦允许每个服务独立于系统的其他部分而增长、更改和扩展。 在这种情况下,如果任务服务需要用户详细信息或者需要更新用户,则可以让任务服务成为用户服务的客户端。 尝试最小化服务之间的绑定,以便它们不在有效负载层耦合。

您会发现自己以这种方式编写了大量客户端代码,并下降到传输层以在服务之间进行调用。 再次仔细思考您是否需要服务之间的这种可扩展性,因为这会带来许多其他开销:

  • 部署开销(更多部署包)
  • 复杂性开销(传输复杂性,考虑非编译时绑定和传输错误处理)
  • 开发开销(更难调试分布式系统)
  • 性能开销(传输序列化/反序列化)
另一方面,如果您的组织需要这些服务独立发展,那么它们可能是实现疯狂高规模的真正强大方法。 大多数需要这种规模的组织已经拥有该领域的专家,我建议与该专家进行对话。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.