当它依赖于其他微服务时,你如何孤立地开发微服务呢?

时间:2017-01-12 23:03:45

标签: microservices

我们正在评估向微服务的转变。每个微服务都是自己独立开发的项目。在规划期间,我们确定一些微服务将通过REST调用,发布/订阅,消息传递与其他微服务进行通信(即订单服务需要来自产品服务的产品信息)。

如果微服务依赖于从另一个微服务中检索数据,那么如何在开发过程中单独运行?例如,当您的订单服务请求产品详细信息时会发生什么,但没有什么可以回答该请求?

2 个答案:

答案 0 :(得分:2)

您可能需要的是一个存根休息服务。创建一个webapp,使用不属于公共API的路径获取预期输出。当您调用公共API时,它会发送刚收到的内容

答案 1 :(得分:2)

  

如果微服务依赖于从另一个微服务中检索数据,那么在开发过程中如何单独运行呢?

在开发和制作过程中,它应该始终暂时与其他服务隔离。

  

例如,当您的订单服务请求产品详细信息时会发生什么,但没有什么可以回答该请求?

这是设计缺陷显露的地方:订单服务不应从其他服务请求产品详细信息。产品详细信息应存储在订阅服务订阅的消息(事件)中。订单服务应该使用发布 - 订阅模式以异步方式获取此消息并将其保存在自己的数据库中。有关产品的数据将存储在2个位置。

请考虑阅读有关微服务的this series of articles以获取更多详细信息。但简而言之:您的服务应该暂时解耦,因此当您的产品服务出现故障时,订单服务可以继续运行而不会中断。这是了解一般良好的分布式系统设计的关键。