Netflix 開(kāi)源 DGS,用于 Spring Boot 的 GraphQL 框架
Netflix 已開(kāi)放其 Domain Graph Service(DGS)框架的源代碼 ,該框架是為獨(dú)立和聯(lián)合 GraphQL 服務(wù)開(kāi)發(fā)的內(nèi)容流服務(wù),用于簡(jiǎn)化 GraphQL 的實(shí)現(xiàn)。
Netflix 的軟件工程師 Paul Bakker 以及 Kavitha Srinivasan 在博客中寫道:“通過(guò)開(kāi)源該項(xiàng)目,我們希望為 Java 和 GraphQL 社區(qū)做出貢獻(xiàn),并向使用該框架的所有人學(xué)習(xí)并與之合作,以使 DGS 在將來(lái)變得更好。”
GraphQL 最初由 Facebook 內(nèi)部開(kāi)發(fā),是一種用于 API 的開(kāi)源查詢語(yǔ)言,是一種服務(wù)器端運(yùn)行時(shí)用于對(duì)現(xiàn)有數(shù)據(jù)執(zhí)行查詢。正如 GraphQL Foundation 解釋的那樣,該語(yǔ)言提供了基于 REST 體系結(jié)構(gòu)的替代方案,目的是提高開(kāi)發(fā)人員的生產(chǎn)力并最大程度地減少傳輸?shù)臄?shù)據(jù)量。”
GraphQL 被包括 Credit Karma、GitHub、Intuit、PayPal 和《紐約時(shí)報(bào)》等在內(nèi)的許多組織用于生產(chǎn)環(huán)境中。Netflix 也將其用作數(shù)據(jù)查詢和操作語(yǔ)言,將數(shù)據(jù)提取到系統(tǒng)中以支持其內(nèi)容工程部門。
為什么需要 DGS 框架
Netflix 在 2019 年開(kāi)始實(shí)施聯(lián)合 GraphQL 架構(gòu),向新的體系結(jié)構(gòu)過(guò)渡意味 Netflix 公司的許多后端團(tuán)隊(duì)需要在其 Java 生態(tài)系統(tǒng)中采用 GraphQL。Netflix 已經(jīng)為后端開(kāi)發(fā)標(biāo)準(zhǔn)化了 Spring Boot 快速應(yīng)用程序開(kāi)發(fā)框架。由于該公司的框架是在 Spring Boot 之上創(chuàng)建的,為了使這種新的聯(lián)合架構(gòu)獲得成功,Netflix 就需要在 Spring Boot 中為 GraphQL 帶來(lái)出色的開(kāi)發(fā)體驗(yàn)。
DGS 框架的主要功能包括:
- 基于注釋的 Spring Boot 編程模型
- 用于將查詢測(cè)試編寫為單元測(cè)試的測(cè)試框架
- Gradle 代碼生成插件,可從 GraphQL 模式創(chuàng)建 Java/Kotlin 類型
- 與 GraphQL Federation 輕松集成
- 與 Spring Security 集成
- GraphQL 訂閱(WebSocket 和 SSE)
- 文件上傳
- 錯(cuò)誤處理
- 基于 Java 的 GraphQL 客戶端
在 Spring Boot 之上創(chuàng)建的 DGS 框架,它利用了 graphql-java 庫(kù),DGS 框架最初僅在 Netflix 內(nèi)部使用,著重于與 Netflix 生態(tài)系統(tǒng)的集成以進(jìn)行跟蹤、日志記錄和指標(biāo)等。但是,將框架適當(dāng)?shù)啬K化也是他們重中之重的任務(wù)。顯然,Netflix 構(gòu)建的大部分框架實(shí)際上并不是特定于 Netflix 本身的。該框架基本上只是構(gòu)建獨(dú)立和聯(lián)合 GraphQL 服務(wù)的一種簡(jiǎn)便方法。
該框架有很多 Kotlin 代碼,我可以用 Java 使用它嗎?
盡管 DGS 框架主要是用 Kotlin 編寫的,但該框架主要設(shè)計(jì)用于 Java,并且大多數(shù)框架的使用者都使用 Java。當(dāng)然,如果使用的是 Kotlin,效果也很好。
Netflix 是否在該框架的分支上運(yùn)行?
不,Netflix正在使用相同的 OSS 組件!Netflix 為分布式跟蹤、日志記錄、指標(biāo)等插入了一些額外的模塊,并且我們有文檔說(shuō)明如何為自己的基礎(chǔ)架構(gòu)實(shí)現(xiàn)類似集成。
準(zhǔn)備好用于生產(chǎn)環(huán)境中了嗎?
是的!在開(kāi)源之前,Netflix 已經(jīng)在不同的部門中使用了超過(guò)一年半的時(shí)間,甚至包括一些大規(guī)模項(xiàng)目。我們已經(jīng)發(fā)布了許多發(fā)行版,其中增加了新功能、修復(fù)了錯(cuò)誤等,并且它已經(jīng)成為一個(gè)非常穩(wěn)定的平臺(tái)。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:Netflix 開(kāi)源 DGS,用于 Spring Boot 的 GraphQL 框架
本文地址:https://www.oschina.net/news/130340/open-sourcing-the-netflix-domain-graph-service-framework