1

我正在努力设计正确的 akka 集群中 2 个独立的 akka 微服务/有界上下文之间的通信。

假设我们每个节点在集群中有 2 个微服务。
两种微服务都基于 akka。

对我来说很清楚,特定有界上下文中的通信将通过从参与者到参与者或从节点 1 上的参与者发送消息到节点 2 上的参与者来处理(如有必要)

问:但是可以在单独的 akka 应用程序之间使用类似的通信吗?例如 boundedContext1.actor --message--> boundedContext2.actor

或者应该通过更清晰的界限来完成:在bc1中引发一个事件- 发布到代理并在bc2中读取事件?

//编辑当前我们已经实现了一个服务注册中心,我们正在通过 Akka 流向服务注册中心发布事件。

4

1 回答 1

2

我认为这里没有普遍的答案。

就像如果您的BC 足够简单,您可以将 BC 保存在一个应用程序中,甚至可以保存在一个边界非常薄弱的​​项目/库中,即只需将它们放入单独的命名空间并为其他 BC 提供 API。

但是,如果您的BC 变得更复杂、更独立并且需要自己的部署周期,那么构建更强大的边界并分离通过消息代理进行通信的微服务肯定会更好。

所以,我的回答是你应该根据你的特定需求“感觉”正确的方式。如果您没有“感觉”,那么遵循KISS原则并从更简单的方式开始,即使用内置的 akka 通信系统。如果将来你BCs会变得更复杂,那么你将不得不重构它们。但是这个决定是合理的,不会是不必要的开销。

于 2018-05-14T12:50:46.487 回答