我们使用 Akka 作为我们的微服务平台。我们暂时不支持非 JVM 平台,因此我们使用 Akka Actor 之间的直接消息传递作为通信平台。
这样,我们的通信单元就只是案例类。我们是否必须重复自己并为每个微服务定义案例类,或者我们可以将所有消息类放入一个项目中并在微服务项目之间共享它?
我知道不建议在微服务之间共享模型,但由于我们使用 Akka 通信协议(protocol),我不确定在多个项目中创建相同的通信案例类是否正确。如果一个微服务改变了它的模型而其他微服务没有改变怎么办?我们如何在不破坏整个系统的情况下处理版本控制并升级到新版本的通信模型。
最佳答案
一种可能的解决方案是将每个微服务构建为少数包并通过 SBT 处理版本控制:
- 模型 - 微服务之间划分的类集
- 核心 - 微服务逻辑,取决于模型包
- 网关 - 主微服务的接口(interface),依赖于模型包,被其他微服务包含,可以在这里缓存一些信息
关于scala - Akka微服务之间如何共享通信模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34973165/