我们正在评估向微服务的转变。每个微服务都是自己独立开发的项目。在规划期间,我们确定一些微服务将通过REST调用,发布/订阅,消息传递与其他微服务进行通信(即订单服务需要来自产品服务的产品信息)。
如果微服务依赖于从另一个微服务中检索数据,那么如何在开发过程中单独运行?例如,当您的订单服务请求产品详细信息时会发生什么,但没有什么可以回答该请求?
答案 0 :(得分:2)
您可能需要的是一个存根休息服务。创建一个webapp,使用不属于公共API的路径获取预期输出。当您调用公共API时,它会发送刚收到的内容
答案 1 :(得分:2)
如果微服务依赖于从另一个微服务中检索数据,那么在开发过程中如何单独运行呢?
在开发和制作过程中,它应该始终暂时与其他服务隔离。
例如,当您的订单服务请求产品详细信息时会发生什么,但没有什么可以回答该请求?
这是设计缺陷显露的地方:订单服务不应从其他服务请求产品详细信息。产品详细信息应存储在订阅服务订阅的消息(事件)中。订单服务应该使用发布 - 订阅模式以异步方式获取此消息并将其保存在自己的数据库中。有关产品的数据将存储在2个位置。
请考虑阅读有关微服务的this series of articles以获取更多详细信息。但简而言之:您的服务应该暂时解耦,因此当您的产品服务出现故障时,订单服务可以继续运行而不会中断。这是了解一般良好的分布式系统设计的关键。