在Akka微服务架构中共享基于案例类的消息的最佳方式

时间:2015-10-27 12:53:11

标签: scala akka

遵循微服务架构的精神,我正在为基于Scala + Akka的系统的每个服务使用git存储库进行思考。每个服务的构建产生一个工件,该工件被发布到包装系统(例如maven)repo。这些工件是用于共享公共代码的机制。

现在,由于在服务之间使用案例类进行消息传递,因此需要在任何地方都使用相同的类版本。使用多项目构建将接口和实现工件中的每个服务分开,然后仅从依赖项目中导入接口工件是否有利? 一些替代方案是在同一个工件上包含接口和实现并导入它,或者为接口和实现提供单独的repos,这看起来有点过头且可能过多。

1 个答案:

答案 0 :(得分:4)

在这里,您将获得基于微服务设计的2个观点,分享所有内容并分享任何内容。我无所不在。同意通信接口(如JSON或其他一些序列化机制)并允许每个服务分别处理域对象表示。这就是为什么

  1. 如果更新了代码库,则另一个可以自由更新,直到必须更新才能正确连接。这也意味着您的解析库可以根据需要解释对象并忽略他们不关心的字段。

  2. 逻辑倾向于找到解决问题的方法。更糟糕的是,业务逻辑倾向于在类,甚至是案例类中找到它的方法进入小“辅助”方法。这可能会以良性方式对服务产生负面影响......直到它不再是良性的。