Netflix 以其松耦合和高度可擴展的微服務架構而聞名,Netflix API 的后端架構經歷了 4 個主要階段。
?𝐌𝐨𝐧𝐨𝐥𝐢𝐭𝐡?

𝐌𝐨𝐧𝐨𝐥𝐢𝐭𝐡 單體架構,各種各樣的服務融合在一起,向外提供服務,大多數創業公司都是這么做的。
?𝐃𝐢𝐫𝐞𝐜𝐭 𝐚𝐜𝐜𝐞𝐬𝐬?

在這個架構中,客戶端程序可以直接向不同的微服務發出請求。但是隨著業務的發展,Netflix 擁有成百上千個微服務 ,加上服務與服務之間的相互調用,整個架構變得混亂和復雜。
?𝐆𝐚𝐭𝐞𝐰𝐚𝐲 𝐚𝐠𝐠𝐫𝐞𝐠𝐚𝐭𝐢𝐨𝐧 𝐥𝐚𝐲𝐞𝐫?

Netflix 開始引入網關聚合層,客戶端應用展示的頁面內容是很豐富的,想象一下,一個電影的頁面,需要獲取電影信息,制作人信息,以及演員信息,前端顯示至少需要調用三個不同的 API。而使用網關來聚合不同后端服務的數據,只需要進行一次調用即可。
?𝐅𝐞𝐝𝐞𝐫𝐚𝐭𝐞𝐝 𝐠𝐚𝐭𝐞𝐰𝐚𝐲?
隨著業務規模不斷擴大,微服務越來越多,維護 API 聚合層變得越來越困難,另外一個問題是,不同后端服務的數據聚合邏輯不能夠復用。
于是,Netflix 引入了靈活的聯合架構 GraphQL Federation,它有三個主要組件。
? DGS:全稱是 Domain Graph Service,一個獨立的 GraphQL 服務,開發人員在 DGS 中定義 Schema,每個 DGS 服務由各個后端 API 團隊自己管理,可以選擇把現有的微服務對接到 DGS,或者直接轉換成 DGS 服務。
? Schema Registry:一個有狀態的組件,保存每個 DGS 的全部的 Schema,并進行組合提供給網關。
? GraphQL Gateway:主要負責為客戶端提供 GraphQL 查詢服務,把大的查詢分解成更小的子查詢,然后轉發到對應的下游 DGS 服務,最后通過網關返回數據給客戶端。

最終的架構圖如下:

??譯:等天黑
?作者:Alex Xu ??
?希望對您有用!