【问题标题】:Spring boot microservices - retrieving data from DBSpring Boot 微服务 - 从数据库中检索数据
【发布时间】:2020-08-07 01:18:33
【问题描述】:

我是微服务架构的新手,我正在尝试使用两个 Spring Boot 微服务构建一个简单的项目,eureka 作为服务发现和 Spring Cloud,用于 API 网关。 UserService 和 OrderService 连接到不同的 MySQL 模式,我的问题是,如何通过客户端调用 rest 方法并传递用户 ID 从 orders_table 检索数据?我有一个仪表板,我必须在其中显示登录用户的所有订单。

客户端项目是一个带有 Web 和 RestTemplate 依赖项的 Spring Boot 应用程序。

桌子结构下方:

用户表: ID, 姓名, 姓氏

订单表: ID, 描述, user_id

谢谢你:)

【问题讨论】:

    标签: java spring-boot microservices netflix-eureka spring-cloud-feign


    【解决方案1】:

    选项 1:从仪表板应用程序调用用户服务以检索 user_id,然后从仪表板应用程序进行第二次调用以获取 user_id 的订单。

    选项 2:拥有第三个服务作为聚合器。从仪表板应用程序调用聚合器,它首先从用户服务获取 user_id,然后从订单服务获取相关订单。

    【讨论】:

    • 我将在使用 RestTemplate 的 Spring MVC 客户端项目中采用选项 1 方法。感谢您的宝贵时间
    • 嗨 Ravi,FeignCient 怎么样?当一个微服务需要调用另一个微服务时,我红色这很有用..我应该集成它吗?我可以从 mvc 客户端对仪表板服务执行休息调用,该服务将通过 feign 客户端调用用户服务和订单服务。如果您已经使用过,请告诉我。谢谢
    • 我知道,但没有使用。这些天我主要使用 WebFlux。所以,我正在使用异步、非阻塞的 WebClinet 进行 Rest 调用。
    【解决方案2】:

    您可以使用 JPA 存储库来获取所需的数据。您可以为您的表定义实体模型。 JPA 存储库将为您提供开箱即用的 CRUD 操作,您可以利用这些操作通过查询获取数据。

    参考链接:https://www.baeldung.com/the-persistence-layer-with-spring-data-jpa

    【讨论】:

    • 对不起,我没有明白你的意思。当然,如果使用 JPA,我将能够在单个数据库具有 n 个表的情况下获取所需的数据。在这种情况下,我有两个微服务连接到不同的模式。
    • 您应该在 OrderService 中将其作为 API 公开(控制器 -> 服务 -> DTO -> 使用 JPA 存储库查询订单表)。
    • 我的订单服务只连接订单数据库,用户服务只连接用户数据库。
    • 您的订单表必须有用户的参考键。应为特定用户创建订单行。我认为这个问题属于数据建模。
    猜你喜欢
    • 2018-10-28
    • 2015-07-24
    • 2019-03-13
    • 2018-08-29
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    相关资源
    最近更新 更多