关于微服务的想法:
我发现这些想法是矛盾的。
让我给出一个假设的业务场景。
我需要一个执行工作流程的服务,该工作流程需要执行自动翻译步骤。
我的公司提供自动翻译服务。有一个RESTful API,可以在其中发布源语言,目标语言和文本,并返回翻译。这是有用的独立服务的完美示例。它是可重用的,并且完全不了解其消费者。
我的企业需要的工作流程服务应利用该服务吗?如果是这样,则我的服务对另一个服务具有“依赖性”。
如果您将此推理推向极致,那么世界上的每个服务都将拥有世界上的所有功能。
现在,我知道您在考虑我们可以通过从请求响应(REST)转移到消息传递来打破这种依赖性。我的服务发布翻译请求消息。翻译完成后,翻译响应消息就会发布,并且我的服务会使用此消息。好的,但是我的服务必须冻结工作流程并在消息到达时继续。即使等待是真正的异步等待,它仍在“等待”(例如,工作流状态持续存在,并且转换消息在一天后到达)。这只是一个延迟的请求-响应。
答案 0 :(得分:1)
对我个人而言,“ 独立”是一种适用于多个维度的品质。从运行时的角度来看,它可能并不独立,但可以独立于开发,部署,操作和可扩展性观点。
例如,翻译服务可以由另一个团队独立开发,部署和运营。同时,他们可以根据他们的需求,独立于您的业务工作流服务扩展翻译服务。并且您可以根据自己的需求扩展业务工作流服务(当然,下游依赖性在这里发挥了作用,但这又是另一个主题)