簡體   English   中英

在Akka微服務架構中共享基於案例類的消息的最佳方法

[英]Best way to share case classes-based messages in an Akka microservice architecture

秉承微服務架構的精神,我正在考慮為基於Scala + Akka的系統的每個服務使用git存儲庫。 每個服務的構建都會產生一個工件,該工件會發布到打包系統(例如maven)存儲庫中。 這些工件是用於共享通用代碼的機制。

現在,由於使用案例類在服務之間傳遞消息,因此需要在所有地方使用相同的類版本。 使用多項目構建將接口服務和實現工件中的每個服務分開,然后僅從相關項目中導入接口工件是否有利? 一些替代方案是在同一工件上同時包含接口和實現,然后將其導入,或者為接口和實現提供單獨的存儲庫,這似乎過高,並且可能會產生過多開銷。

在這里,您將獲得基於微服務的設計的2個觀點,共享一切,不共享任何東西。 我一無所獲。 同意通信接口(例如JSON或其他某種序列化機制),並允許每個服務分別處理域對象表示形式。 這就是為什么

  1. 如果一個人更新了其代碼庫,則另一個人可以自由地不更新,直到必須絕對更新才能正確地進行接口。 這也意味着您的解析庫可以根據需要解釋對象,並忽略它們不關心的字段。

  2. 邏輯傾向於找到進入事物的途徑。 更糟糕的是,業務邏輯傾向於在類甚至案例類的小“幫助”方法中找到它的方法。 這可能以良性方式不利地耦合服務,直到不再良性為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM