我使用帶有堆疊的Microservices架構。Spring-cloud
對于服務之間的通信,我決定使用gRPC.
我有一個名為的服務Accounting,今天我實施了一個gRPC-interface專案并將其添加到Git存盤庫中。
我使用以下命令添加gRPC-interface到Accounting服務中:Git-submodules
git submodule add -b master <Git-Repo-URL>
git submodule init
現在我想在那個類中創建一個服務類Accounting,implements但gRPC-interface它不能識別gRPC-interface模塊中的任何類!
我想我需要對模塊中的檔案setting.gradle和build.gradle檔案進行一些更改Accounting,但我不知道我應該做什么更改,甚至不知道在互聯網上尋找什么主題。
任何幫助或線索將不勝感激!
uj5u.com熱心網友回復:
聽起來您在這里對微服務感到困惑,但是,為了回答所述問題:
想想“推特 API”。Twitter 有 2 個“專案”(不是 git 子模塊意義上的,而是英文單詞意義上的)。有 twitter-the-website,它是運行這一切的非公共代碼,特別是包括在您連接到api.twitter.com. 但是還有一個開源(或至少是公開可用的)庫,您可以將其包含在您的 java 專案中,讓您可以與 twitter API對話。這個公共 API 包括與 twitterverse 中的概念相匹配的模型類(例如“推文”、“用戶”、“直接訊息”、“一個用戶決定關注另一個用戶的概念”等),以及函式(可能在“api”物件上)您使用引數呼叫并回傳這些模型類的實體。
你需要做同樣的事情。一個微服務由兩個專案組成:另一個微服務本身包含的 API,類似于 twitter 提供的公共“java API”庫,以及實際代碼。這可能是一個專案或一百萬個,微服務的一個重要部分是:從依賴于微服務 B 的微服務 A 的角度來看,除了描述的部分之外,您根本不需要了解 B 的任何資訊它的公共 API。就服務 A 而言,其他一切都是無關緊要的實作細節。
如果您將一個微服務的所有代碼都包含在另一個微服務中,那么您最終會得到每個“微服務”,包括所有其他微服務的所有代碼,并且您的服務不再是微服務。
是的,這很煩人。您并不完全需要復制代碼(定義模型的“公共 API”部分也可以是微服務本身的依賴項),但是每個微服務都會變成維護 2 個獨立的,您需要找到一種方法'public API' 部分可分發,就好像它是 twitter API。你可能不想把它放在 maven central 上,但這就是為什么 maven(真的是 sonatype)、gradle 等都提供了公司范圍的中間依賴服務器的概念——它可以托管你的“公共 API”專案。以及本地依賴項 - 閱讀構建系統的檔案,了解如何處理非開源公開(即不在 maven 中央)依賴項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434118.html
上一篇:錯誤:“TypeError:float()引數必須是字串或數字,而不是'NoneType'”,但沒有'NoneType'?
