对于我的硕士学位最终项目,我决定设计一个无人机传送系统。主要目的是学习设计复杂的系统。
基本用例是:
到目前为止一切顺利。我的问题与该系统的软件架构有关。我有一些一般性问题和一些具体问题。
一般问题:
具体问题:
到目前为止,我已经提出了这种架构:
系统组件:
系统流程:
我的问题与消费者和制作人有关:
消费者可以在其中使用逻辑,在我的示例中它将具有确定最佳无人机的算法,为此,它还需要与mysql通信,以检索无人机位置?这是一个好习惯吗?如果不是我怎么能做到不同?
消费者留在申请中的最佳做法是什么?现在,消费者与Web服务在同一服务器上运行,并且代码未与Web服务代码分离。我想也许将来你可能需要将消费者转移到一个单独的服务器上?您认为消费者如何轻松地与应用程序分离?
我认为制作人必须留在应用程序中,我的意思是与Web服务应用程序配合使用。那可以吗?
很抱歉这篇长篇文章,以及我的英语不好。 非常感谢你:))
答案 0 :(得分:0)
是的,消费者应该有逻辑。这是标准EIP routing pattern。
如果您正确地将业务逻辑层与数据访问层分开(您的队列访问是数据访问层),那么让它们共享一个共同项目可能不是问题。您最终可能希望将业务逻辑/域模型与Web服务和路由器/消费者分开,但这些更多是部署和打包问题。
只要您将Web服务代码保留在业务逻辑之外(反之亦然),您可能会没事,您只需要多次部署整个事物,并且只暴露与任何相关的端点。给定部署。如果你通过库分离你的图层,你最终可能会更开心,因为它实际上会强制执行不混合的问题。
是的,必须使用Web服务部署生产者,只需确保您知道它作为数据访问层,它位于单独的包/类中。它将使您的测试更容易。