如何共享Akka微服务之间的通信模型?

问题描述:

我们使用Akka作为我们的微服务平台。目前我们不会支持非JVM平台,所以我们使用Akka actors之间的直接消息作为通信平台。如何共享Akka微服务之间的通信模型?

这样,我们的通讯单元只是案例类别。我们是否必须重复自己并为每个微服务定义案例类,或者我们可以将所有消息类放入单个项目并在微服务项目之间共享它们?

我知道不推荐在微服务之间共享模型,但是因为我们使用Akka通信协议,我不确定是否在多个项目中创建相同的通信案例类是正确的。如果一个微服务改变了模型,而其他模型则不改变呢?我们如何在不破坏整个系统的情况下处理版本控制和升级到通信模型的新版本。

的一种可能的解决方案是由SBT楼各微服务尽可能少的包和处理版本:

  • 模型 - 一组类微服务
  • 之间划分 - 微服务逻辑,取决于模型包
  • 网关 - 主要微服务的接口依赖于模型包,包含在其他微服务中,有可能在这里缓存一些信息