我有以下 4 項服務-
- Notes-service -- 接受 NotesRequest 并產生 NotesResponse
- Reminder-service -- 接受 ReminderRequest 并產生 ReminderResponse
- Todo-service -- 接受 TodoRequest 并產生 TodoResponse
- 個人助理服務——接受 AssistantRequest 和 AssistantResponse
個人助理服務在內部呼叫 3 個服務,Notes-service、Reminder-service 和 Todo-service。Notes-service 將在其中包含這兩個請求和回應 pojo——
- NotesRequest.java
- NotesResponse.java
但是要在 Rest 客戶端的幫助下呼叫它,個人助理也將需要這些 pojo。一種可能的方法是創建一個名為 common-service 的公共模塊,并將每個服務的可共享請求回應物件放在 common-service 中。每個服務模塊都將依賴于 common-service。
有什么好的方法可以讓代碼干凈和模塊化并使部署獨立。
uj5u.com熱心網友回復:
我會考慮兩種可能性:
1.-使用像swagger(或類似)這樣的框架來公開API規范(例如通過OpenAPI)。這可以與代碼生成工具一起使用來生成客戶端。并在需要使用該服務的客戶端的專案中將客戶端生成作為構建程序的一部分。不要對生成的代碼進行版本控制,這是一種不好的做法。
2.- 在每個服務專案中創建一個合同模塊,其中您將只有合同(請求、回應和 api 介面,如 JAX-RS 介面或 Spring 介面)。該模塊可以用作需要該服務客戶端的專案中的依賴項。
使用哪一種取決于您使用的技術以及使用的客戶要求和標準。
更新示例
例如,使用選項 2,您將擁有以下專案結構notes:
-notes-parent
-notes-contract
-notes-service
每一個都有它的 pom.xml.:
- parent將只是一個容器根模塊
- 合約包含請求、回應和服務介面。這將用作想要查詢 notes-service 的專案的依賴項
- 為可部署的服務本身提供服務。這也將使用合同作為依賴項。
并使用所有服務執行此操作。每個xxx-service子模塊都將依賴yyy-contract它想要查詢的其他服務的所有模塊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/417593.html
標籤:
