在微服务架构中,用于通用功能的服务应该是通用的还是不通用的

时间:2018-12-03 08:42:01

标签: microservices soa

这个问题与微服务有关,当我有多个微服务提供可以订购且收费的功能/服务时。

我已确定采用哪种方法,

a)每个计费微服务的订单和计费服务及其各自的数据库。 b)跨所有微服务的通用订单管理和计费服务。

让我困扰的一件事是,每个可计费功能/服务都有不同的计费标准/折扣。

观察一些体系结构,遇到以下问题-https://d1jnx9ba8s6j9r.cloudfront.net/blog/wp-content/uploads/2018/02/Microservice-Architecture-Of-UBER-Microservice-Architecture-Edureka-768x762.png

在博客中-https://dzone.com/articles/microservice-architecture-learn-build-and-deploy-a

它描述了计费是整个架构的共同点,并且非常核心。

您的见解将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

根据我到目前为止所看到的,人们更喜欢为订单管理提供专用的微服务,因为它的行为在很大程度上不取决于所订购产品的类型。每个订单的工作流程几乎都相同:下订单,等待付款,交付,取消等。

开票是相同的,其行为并不取决于发票上使用哪种产品,而是取决于它们花费多少,取决于付款方数据等。

关于数据,专用的订单管理或Billing微服务可以拥有所需的数据。例如,订单管理者拥有订单行项目,订单状态和交货详细信息(地址,允许的交货天数/小时数);帐单微服务拥有用户的帐单详细信息(即地址)。

关于弹性,即使其他微服务已关闭,订单管理和计费仍应正常工作。例如,如果“珠宝产品”目录关闭并且无法显示珠宝详细信息,则用户应该可以取消其订单。

  

让我困扰的一件事是,每个可计费功能/服务都有不同的计费标准/折扣。

也许每个域(可计费功能/服务)都应具有自己的定价模块,该模块用于计算订单项的最终价格。订单管理人员对产品的费用方式/原因X美元不感兴趣;它只对最终价格感兴趣;对于帐单同样有效。