这个问题与微服务有关,当我有多个微服务提供可以订购且收费的功能/服务时。
我已确定采用哪种方法,
a)每个计费微服务的订单和计费服务及其各自的数据库。 b)跨所有微服务的通用订单管理和计费服务。
让我困扰的一件事是,每个可计费功能/服务都有不同的计费标准/折扣。
在博客中-https://dzone.com/articles/microservice-architecture-learn-build-and-deploy-a
它描述了计费是整个架构的共同点,并且非常核心。
您的见解将受到高度赞赏。
答案 0 :(得分:1)
根据我到目前为止所看到的,人们更喜欢为订单管理提供专用的微服务,因为它的行为在很大程度上不取决于所订购产品的类型。每个订单的工作流程几乎都相同:下订单,等待付款,交付,取消等。
开票是相同的,其行为并不取决于发票上使用哪种产品,而是取决于它们花费多少,取决于付款方数据等。
关于数据,专用的订单管理或Billing微服务可以拥有所需的数据。例如,订单管理者拥有订单行项目,订单状态和交货详细信息(地址,允许的交货天数/小时数);帐单微服务拥有用户的帐单详细信息(即地址)。
关于弹性,即使其他微服务已关闭,订单管理和计费仍应正常工作。例如,如果“珠宝产品”目录关闭并且无法显示珠宝详细信息,则用户应该可以取消其订单。
让我困扰的一件事是,每个可计费功能/服务都有不同的计费标准/折扣。
也许每个域(可计费功能/服务)都应具有自己的定价模块,该模块用于计算订单项的最终价格。订单管理人员对产品的费用方式/原因X美元不感兴趣;它只对最终价格感兴趣;对于帐单同样有效。