我想了解GraphQL最適合在微服務體系結構中使用的位置。GraphQL和微服務體系結構
關於只有1個GraphQL模式作爲API網關代理到目標微服務的請求並強制響應,存在一些爭議。微服務仍然會使用REST/Thrift協議來進行通信思想。
另一種方法是每個微服務都有多個GraphQL模式。擁有一個較小的API網關服務器,可將請求路由到目標微服務,並提供請求的所有信息+ GraphQL查詢。
1日法
有1 GraphQL模式爲API網關會在那裏每次你改變你的微服務合同的輸入/輸出一個缺點,我們必須相應地改變GraphQL架構上API網關側。
第二個方法
如果使用每個微服務多GraphQL架構,有意義的方式,因爲GraphQL強制執行模式定義,而消費者將需要尊重從微服務給定的輸入/輸出。
問題
你在哪裏找到GraphQL正確的適合設計微服務架構?
您將如何設計一個可能的GraphQL實現的API網關?
+1我應該把我的後一個聲明,我沒有與GraphQL經驗,而不是響應基於在回答這個問題的研究過程中閱讀一小段簡短的內容。我認爲這個答案更好地解決了OP的查詢。 –
@helfer:這真的很有意義:)謝謝。我在這個美妙的答案之上有幾個問題。 - 您是說GraphQL必須用作API網關? - 假設我有一個** Order ** Microservice,它暴露了REST或GraphQL端點。一旦我完成它,我不得不更新主要GraphQL模式以反映與微服務將暴露的完全相同的數據?它是不是聽起來不重複,或者離開應該獨立部署的微服務文化?對微服務的任何更改都必須反映/複製到主GraphQL架構? – Fabrizio
@Fabrizio GraphQL的好處在於即使後端REST API發生變化,只要有一種方法可以獲取REST服務先前公開的數據,GraphQL模式仍然可以保持不變。如果它暴露更多的數據,那麼處理這個問題的規範方法就是將新的字段/類型添加到現有的模式中。 Facebook創建GraphQL的人告訴我,他們在四年內從未對他們的模式做過任何改變。他們所做的所有更改都是附加的,這意味着新客戶可以使用新功能,而老客戶可以繼續工作。 – helfer