【问题标题】:How to validate data id's between microservices如何验证微服务之间的数据 ID
【发布时间】:2020-01-05 01:25:19
【问题描述】:

我有两个微服务:

  • mPayment 开始支付交易
  • mConsoleUser 用于管理用户(developerUuid、companyUuid 等...)

我必须从我的前端开始付款交易。 要开始付款,我必须将此 DTO 发送到 mpayment API:

public class ConsoleUserTransactionDto implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -8437815814701080539L;
    private BigDecimal amount;
    private Boolean isCashIn = false;
    private String mobileMoneyServiceCode;
    private TransactionActionEnum action;
    private String phoneNumber;
    private Long developerUuid;
    private Long companyUuid;

    }   
}

我首先需要在开始交易支付之前验证 developerUuid 和 companyUuid,以确保它们存在。

所以我的问题是: - 我应该从调用 mConsoleUser 的 mPayment 微服务调用 Web 服务以在开始交易之前验证信息吗? - 我是否应该开发第三个微服务,由前端调用,调用 mConsoleUser 来验证所有信息,然后调用 mPayment 开始交易?

什么是最好的架构?

【问题讨论】:

    标签: spring microservices


    【解决方案1】:

    最好在 m-Payment 中进行验证,因为它可能会收到来自其他系统和攻击者的调用。因此,如果您确保 m-Payment 不会执行未经授权或虚假的请求,将会有所帮助。如果前端频繁发送错误信息的可能性较大,那么可以考虑为前端调用的 m-ConsoleUser 实现微服务。例如,如果关系经常变化,那么前端可能会向后端发送过时的数据,并且可能会导致除了 2XX 之外的许多不同的响应。

    但是,即使您在前端使用验证服务,您仍然需要在 m-Payment 中进行验证,因为我们通常会创建独立于前端的后端架构。所以,后端不应该依赖前端的验证。

    【讨论】:

    • 非常感谢您提供清晰的答案和示例。
    猜你喜欢
    • 2018-05-12
    • 2021-02-07
    • 2018-01-18
    • 2021-01-10
    • 2020-04-05
    • 2019-08-02
    • 1970-01-01
    • 2021-12-10
    • 2019-02-17
    相关资源
    最近更新 更多