簡體   English   中英

如何跨微服務擁有通用的 DTO 或實體

[英]How to have common DTOs or entities across Microservices

假設我有 5 個不同的微服務。 每個都使用一個公共 DTO,即 UserDTO.java 或實體 User.java。

如果所有人都可以訪問這些 DTO,我想出了兩種方法

  1. 將所有這些 DTO 放在所有微服務中

  2. 要創建一個項目,說Project-commons並保留所有常見的 DTO,然后在所有微服務中添加該項目的依賴項

我知道跨微服務共享通用 DTO 會扼殺微服務的概念/原則,但我想知道還有其他可用的方法嗎?

實際上,只要您嚴格控制該庫的版本,共享一個公共代碼庫並不會消除將更改隔離到一個微服務的概念/原則。 這樣,一個微服務團隊可以決定它需要共享庫中的新功能,並且可以增加庫的版本號並添加新功能。 使用該庫的現有微服務不會受到影響,除非它們獨立決定開始使用該庫的較新版本。

所以這就是我們要做的。 我們有在我們的微服務中共享的 jar 文件,但我們將這些 jar 文件的特定版本推送到 Nexus 並按每個微服務中的版本號引用這些 jar 文件。

請注意,此概念與依賴於第三方組件(如 Apache Commons 庫)的兩個微服務沒有區別。 僅僅因為 Apache 推出了新版本的庫並不意味着任何人的二進制文件都會發生變化。 每個依賴於該庫的代碼庫都可以決定是否以及何時遷移到新版本,而與另一個代碼庫可能使用的版本或庫的最新版本無關。

暫無
暫無

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

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