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

标签 scala akka microservices

我们使用 Akka 作为我们的微服务平台。我们暂时不支持非 JVM 平台,因此我们使用 Akka Actor 之间的直接消息传递作为通信平台。

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

我知道不建议在微服务之间共享模型,但由于我们使用 Akka 通信协议(protocol),我不确定在多个项目中创建相同的通信案例类是否正确。如果一个微服务改变了它的模型而其他微服务没有改变怎么办?我们如何在不破坏整个系统的情况下处理版本控制并升级到新版本的通信模型。

最佳答案

一种可能的解决方案是将每个微服务构建为少数包并通过 SBT 处理版本控制:

  • 模型 - 微服务之间划分的类集
  • 核心 - 微服务逻辑,取决于模型包
  • 网关 - 主微服务的接口(interface),依赖于模型包,被其他微服务包含,可以在这里缓存一些信息

关于scala - Akka微服务之间如何共享通信模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34973165/

相关文章:

java - stub 的 gRPC 并发

scala - Scala的可变Map更新[map(key)= newValue]语法如何工作?

scala - 为什么(复制)附加到 Scala 中的 Seq 被定义为 :+ and not just + as in Set and Map?

java - 微服务架构

java - AKKA 中如何读取配置

scala - spray-can simple-http-server 示例 Bound 消息如何处理?

java - Jhipster微服务: How to create dynamic instances on microservices in production?

java - 处理一对具有严重偏斜数据的 RDD 时性能不佳

scala - 使用一个服务调用(List)的结果来获取另一个 List

java - 如何随时取消异步计算?