国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何對GraphQL APIs實現監控

譯文
安全 應用安全
在實際應用中,我們往往會疑惑:如何使用GraphQL來準確地監控到目標系統的重要位置。本文將和您一起討論那些有關GraphQL APIs監控的優秀實踐。

【51CTO.com快譯】作為REST的另一種選擇,GraphQL自2015年發布以來,為前端開發人員提供了他們渴望已久的靈活性。他們可以通過一次性查詢,來定義所有需要的數據,并能夠一次性地“打包”獲取,進而大幅減少了等待的時間。

除了簡化前端,REST也讓監控等方面變得更加簡單。據此,后端團隊可以考量每一個端點的狀態,并能夠及時地發現當前出現的問題。當然,在使用的過程中,我們需要考慮清楚的最關鍵問題是:如何使用GraphQL來準確地監控到目標系統的重要位置。下面,讓我們一起來討論那些有關GraphQL APIs監控的優秀實踐。

[[331112]]

GraphQL架構

為了弄清楚上述問題件,讓我們首先來了解GraphQL的架構。通常,一個簡單的GraphQL系統會包括如下三個部分:

  • 一種可定義所有數據類型的schema(結構模式)。
  • 一個使用該schema將查詢到的每個部分都路由到某個解析器(resolver)的GraphQL引擎。
  • 一到多個能夠被GraphQL引擎所調用的解析器。

通過解析schema,GraphQL后端會讓服務器了解到哪種解析器能夠處理哪種類型的查詢。也就是說,當一個查詢被發送到GraphQL端點時,GraphQL引擎會解析該查詢中的每一種請求類型,進而調用解析器來滿足其請求。可以想象,此類方法僅限于在與簡單查詢一起使用時,才能提供卓越的性能。

有時候,查詢的某些部分會被連接到同一個數據源(包括數據庫或第三方API等)。例如,如果我們加載某個用戶的賬號及其地址,它們可能在GraphQL的schema中具有兩種類型,而在數據源中卻只有一條記錄。那么我們同時發出請求的時候,當然不希望服務器對同一個數據源發出兩次查詢請求。

針對上述問題,業界會采用一種被稱為數據加載器(data-loader)的模式。該數據加載器是位于解析器和數據源之間的另一個GraphQL API層。通過簡單的設置,解析器將能夠直接訪問到數據源。而在更為復雜的迭代中,解析器則會告訴數據加載器它們到底需要什么,據此加載器也會針對該目的去訪問數據源。

那么,由此帶來的好處是:數據加載器可以持續等待,直到所有的解析器都已被調用,并且完成了對于數據源的訪問為止。針對上面提到的例子,如果有人想加載用戶的賬號和地址的話,那么只需對數據源發出一個請求便可。

可見,解析器只需了解其對應的需求,而數據加載器則需要知道所有解析器的目的,并據此來優化具體的訪問。

監控GraphQL

有了上面的理論基礎,我們就可以根據自己的架構,在如下多個位置監控GraphQL API了:

  • HTTP端點:針對那些影響到我們API的所有流量。
  • GraphQL查詢:針對每個特定的查詢。
  • GraphQL解析器或數據加載器:針對數據源的每個訪問。
  • 全棧追蹤:針對每個查詢所影響到的解析器和數據加載器。

1. HTTP端點

在GraphQL架構中,通常只有一個HTTP端點,因此在該REST API級別上的監控,往往只能讓我們了解到有關API總體狀態的信息。

當然,這只是我們監控的一個起點。如果能夠提供低延遲、低錯誤率的全量信息,而且客戶端并無任何投訴產生的話,那么這些指標完全可以為我們節約后續花在深度監控上的大量時間和精力。但是,如果某個地方出現了問題,我們就需要更深入地進行探究了。

2. GraphQL查詢

下面,我們需要監控每一個查詢,當然主要針對的是那些靜態使用模式(static usage patterns)的API。

如果我們僅將API與自己的客戶端一起使用的話,那么針對固有查詢的變化一般不會經常發生。而如果我們的API需要處理不同客戶端的不同請求,那么查詢請求不但多,而且雜。這些只有細微差別的請求往往會拖慢整體的速度。而消除此類問題的一種做法是:檢查那些最常見的查詢,并對它們實施綜合監控。這就意味著我們需要事先定義一整套查詢和變量的組合,然后從測試客戶端運行之,以獲悉它們的用時。在此基礎上,我們能夠減少在更新時產生的,嚴重影響性能的風險因素。由于持久化查詢(Persisted queries,https://blog.apollographql.com/persisted-graphql-queries-with-apollo-client-119fd7e6bba5)可以緩存那些最常用的查詢,因此我們可以用它來解決此類問題。

3. 解析器和數據加載器

如果我們能夠查看到后端所訪問的數據源位置,那么就能夠更好地獲悉如下方面:

  • 是在訪問模式中使用了錯誤的數據源,還是需要改用其他類型的數據庫?
  • 如果數據源類型沒問題的話,那么我們還需要改進對它們的請求方式嗎?我們是否需要添加數據加載器?
  • 那些發送到外部API的請求是否太慢了?我們是否可以將數據復制到更接近后端的位置?

可見,只有當我們能夠看到后端具體查詢的是什么數據時,上述問題的答案才能迎刃而解。

正如我們在前面討論過的:解析器只能允許我們監控單個解析器的運作;而數據加載器使我們能夠在一個請求中查看到所有解析器的工作。那么,數據加載器的另一個附帶好處便是:我們能夠發現解析器之間的問題,并及時予以解決。

4. 全棧跟蹤

最為全面透徹的監控方式當屬:使用tracing-ID來標記查詢,將其傳遞給解析器以完成對該ID的解析,然后傳遞給數據加載器,并最終抵達數據源本身。據此,我們可以使用tracing-ID來記錄時間和錯誤,以便后續對其進行合并,以及了解局部狀態。

當然,在測量查詢時,我們所獲取到的有關解析用時的數據,實際上是數據被加載到解析器和/或數據加載器中進行的,而不是完成查詢解析的用時。畢竟,系統在加載數據時,已不再需要使用查詢了。這也就是GraphQL的核心思想之一:將查詢與實際數據的加載進行解耦(decoupling)。可見,我們通過全棧監控,可以全面地獲悉在發送查詢時,后臺究竟是如何運作的。

結論

總的說來,通過了解GraphQL API的后端結構,我們可以將REST API掛接到目標代碼的不同位置,進而清晰且全面地監控生產系統,以獲悉有關緩存和錯誤處理等方面的問題。

原標題:How to Best Monitor GraphQL APIs ,作者: Kay Ploesser 

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:趙寧寧 來源: 51CTO
相關推薦

2016-08-05 15:04:33

javascripthtmljs

2023-06-08 09:44:13

WindowSpy目標用戶監控

2023-11-09 09:13:48

GraphQLAPI 架構

2010-10-12 16:26:44

2020-10-27 18:45:45

GolangGraphQ開發

2021-06-03 09:00:00

Kubernetes集群容器

2021-05-07 09:06:55

GraphQLAPI 以太坊

2018-04-23 14:31:02

微服務GraphQLBFF

2023-03-10 15:03:37

Web 應用程序API開發

2023-03-16 18:04:00

APIWeb 應用程序開發

2009-07-02 10:03:02

DataView排序

2016-10-20 09:07:51

ChromiumGoogleEloston

2020-03-09 09:15:56

集群Prometheus開源

2019-07-07 08:02:05

AI人工智能智能監控

2014-05-21 14:03:55

日志監控VDI

2014-05-21 09:14:00

VDI審計日志監控監控

2014-01-02 15:16:42

PythonLinux服務器服務器監控

2011-03-31 14:44:55

cactisquid監控

2020-09-28 06:57:39

Node.jsGraphQLAPI

2022-12-05 13:45:06

Actuator監控
點贊
收藏

51CTO技術棧公眾號

91精品国产九九九久久久亚洲| 欧美一区二区免费观在线| 久久久久久久爱| 日韩欧美精品免费在线| 强开小嫩苞一区二区三区网站 | 日本欧洲国产一区二区| 国产精品国产三级在线观看| 午夜久久久影院| 中文字幕天天干| 国产91精品久久久久久久网曝门| 69堂成人精品视频免费| 免费黄色成人| 久久久久久国产精品美女| 免费污视频在线一区| 亚洲第一区在线观看| 色综合久久久久久久久五月| 精品久久中文| 亚洲国产一区二区三区| 可以在线看的黄色网址| 国产精品一区二区久久不卡| 亚洲精品在线观看免费| 久久久亚洲人| 欧美日韩国产精品一区二区| 尤物精品在线| 国产精品亚洲一区| 欧美日韩三级| 国产精品一区二| 国内一区二区三区| http;//www.99re视频| 欧美丰满日韩| 91久久久久久久久久久| 五月开心六月丁香综合色啪| 国产日韩精品在线观看| 999久久久免费精品国产| 91sao在线观看国产| 国产精品毛片av| 国产69精品99久久久久久宅男| 亚洲精品一二三**| 久久久天堂国产精品女人| www.久久久久爱免| 欧美激情亚洲综合一区| 欧美黄色网视频| 国产玖玖精品视频| 女同视频在线观看| 欧美精品第一页| 人人干在线视频| 欧美精品在线视频| 91九色在线播放| 亚洲小视频在线| 欧美日韩国产一区二区在线观看| 影音先锋欧美精品| 亚洲精品一区二区三区在线| 欧美亚洲国产视频| 99久精品视频在线观看视频| 国产高清精品一区二区三区| 欧美一级视频| 99中文字幕在线观看| av激情亚洲男人天堂| 国产理论在线播放| 亚洲国产综合在线| 午夜在线免费观看视频| 亚洲经典中文字幕| 日韩在线精品强乱中文字幕| 亚洲免费高清| 精品久久久久久亚洲国产300| 爽爽视频在线观看| 日韩欧美不卡在线观看视频| 成人国产精品一区二区免费麻豆| 久久久久久com| 久久国产成人午夜av影院宅| 欧美日韩国产一级| 日本孕妇大胆孕交无码| 亚洲视频电影图片偷拍一区| 国产精品网址| 国产精品久久久久av福利动漫| 免费看精品久久片| 91国产精品视频在线观看| 欧美日韩国产黄| 第四色日韩影片| 高清亚洲成在人网站天堂| 自由日本语亚洲人高潮| 国产精品12p| 一区二区三区中文字幕电影| 69xxx在线| 久久久久久久久久国产精品| 天堂网在线观看国产精品| 在线亚洲美日韩| 一区二区在线观看视频在线观看| 午夜精品一区| 久久久久久97| 久热国产精品| 九色丨porny丨| 精品国产免费久久| 露出调教综合另类| 一区二区欧美久久| 欧美日韩看看2015永久免费| 久久久水蜜桃| 国产精品少妇自拍| caoporn免费在线视频| 亚洲3p在线观看| a成人v在线| 91精品国产一区二区三区动漫| 国产成人精品1024| 北岛玲日韩精品一区二区三区| 色综合伊人色综合网| 欧美日韩1080p| 向日葵污视频在线观看| 欧美一区二区三区在线观看 | 天堂久久一区二区三区| 久久99爱视频| 国产偷亚洲偷欧美偷精品 | 国产午夜精品一区理论片飘花 | 久久久久久久少妇| 日韩精品一区在线| 日本不卡二三区| 国产视频在线视频| 亚洲第一在线视频| 欧美日韩专区| aaa免费看大片| 中文字幕日本欧美| 日韩电影在线观看电影| 青青色在线视频| 国产a∨精品一区二区三区不卡| 激情丁香综合五月| 日韩成人av电影在线| 亚洲宅男天堂在线观看无病毒| 国产91在线精品| 亚洲一二区在线| 国产一区二区不卡| 日本中文字幕在线2020| 国产大片精品免费永久看nba| 99精品视频一区| mm131亚洲精品| 一区二区成人av| 国产一区二区在线免费观看| 黄色在线视频网站| 国产一区二区三区免费不卡| 精品久久久国产| 久久免费av| 天堂在线第六区| 国产精品久久久久不卡| 亚洲美女免费在线| 亚洲影院天堂中文av色| 国产91色在线观看| 九九精品视频在线| 久久久精品天堂| 99re8这里有精品热视频免费| 国产福利视频在线播放| 欧美精品在线观看| 久久婷婷国产综合精品青草 | 综合国产精品久久久| 精品少妇一区二区三区在线播放| 色一区二区三区| 欧美久久在线| 欧美性大战xxxxx久久久| 182在线视频观看| 亚欧精品在线| 亚洲精品视频免费在线观看| 国产一区二区三区美女| 欧美一区国产| 激情网站五月天| 九九精品视频在线| 国产精品三级视频| 米奇777超碰欧美日韩亚洲| bdsm精品捆绑chinese女| 国产欧美一区二区三区久久人妖| 欧美日韩国产激情| 在线亚洲欧美| 亚洲美女久久精品| 国产精品久久久久久久久久新婚 | 欧美色视频在线观看| 激情欧美日韩| 都市激情久久综合| 国产在线视频在线| 久久久久久久久久久久av| 亚洲特黄一级片| 狠狠色狠狠色综合日日tαg| 性xxxxfjsxxxxx欧美| 男人天堂a在线| 欧美在线一级va免费观看| 色综合咪咪久久| 久久精品久久综合| 精品中文字幕一区二区三区| 米奇777在线影院线| 亚洲精品久久7777777| 成人黄色网址在线观看| aiai久久| 欧美xxx.com| 在线免费观看成人| 韩国日本不卡在线| 欧美色精品在线视频| 国产成人精品在线看| a中文在线播放| 91九色国产ts另类人妖| 久久免费国产精品1| 欧美视频在线一区| 成人av网址在线观看| 日韩成人综合| 精品成人av| 国产高清在线看|