91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

對GraphQL APIs實現(xiàn)監(jiān)控的步驟

如意 ? 來源:百家號 ? 作者:51CTO ? 2020-06-28 14:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

除了簡化前端,REST也讓監(jiān)控等方面變得更加簡單。據(jù)此,后端團(tuán)隊可以考量每一個端點的狀態(tài),并能夠及時地發(fā)現(xiàn)當(dāng)前出現(xiàn)的問題。當(dāng)然,在使用的過程中,我們需要考慮清楚的最關(guān)鍵問題是:如何使用GraphQL來準(zhǔn)確地監(jiān)控到目標(biāo)系統(tǒng)的重要位置。下面,讓我們一起來討論那些有關(guān)GraphQL APIs監(jiān)控的優(yōu)秀實踐。

GraphQL架構(gòu)

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

一種可定義所有數(shù)據(jù)類型的schema(結(jié)構(gòu)模式)。

一個使用該schema將查詢到的每個部分都路由到某個解析器(resolver)的GraphQL引擎。

一到多個能夠被GraphQL引擎所調(diào)用的解析器。

通過解析schema,GraphQL后端會讓服務(wù)器了解到哪種解析器能夠處理哪種類型的查詢。也就是說,當(dāng)一個查詢被發(fā)送到GraphQL端點時,GraphQL引擎會解析該查詢中的每一種請求類型,進(jìn)而調(diào)用解析器來滿足其請求??梢韵胂螅祟惙椒▋H限于在與簡單查詢一起使用時,才能提供卓越的性能。

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

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

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

可見,解析器只需了解其對應(yīng)的需求,而數(shù)據(jù)加載器則需要知道所有解析器的目的,并據(jù)此來優(yōu)化具體的訪問。

監(jiān)控GraphQL

有了上面的理論基礎(chǔ),我們就可以根據(jù)自己的架構(gòu),在如下多個位置監(jiān)控GraphQL API了:

HTTP端點:針對那些影響到我們API的所有流量。

GraphQL查詢:針對每個特定的查詢。

GraphQL解析器或數(shù)據(jù)加載器:針對數(shù)據(jù)源的每個訪問。

全棧追蹤:針對每個查詢所影響到的解析器和數(shù)據(jù)加載器。

1. HTTP端點

在GraphQL架構(gòu)中,通常只有一個HTTP端點,因此在該REST API級別上的監(jiān)控,往往只能讓我們了解到有關(guān)API總體狀態(tài)的信息。

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

2. GraphQL查詢

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

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

3. 解析器和數(shù)據(jù)加載器

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

是在訪問模式中使用了錯誤的數(shù)據(jù)源,還是需要改用其他類型的數(shù)據(jù)庫?

如果數(shù)據(jù)源類型沒問題的話,那么我們還需要改進(jìn)對它們的請求方式嗎?我們是否需要添加數(shù)據(jù)加載器?

那些發(fā)送到外部API的請求是否太慢了?我們是否可以將數(shù)據(jù)復(fù)制到更接近后端的位置?

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

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

4. 全棧跟蹤

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

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

結(jié)論

總的說來,通過了解GraphQL API的后端結(jié)構(gòu),我們可以將REST API掛接到目標(biāo)代碼的不同位置,進(jìn)而清晰且全面地監(jiān)控生產(chǎn)系統(tǒng),以獲悉有關(guān)緩存和錯誤處理等方面的問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 監(jiān)控系統(tǒng)

    關(guān)注

    21

    文章

    4175

    瀏覽量

    184904
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2375

    瀏覽量

    66805
  • GraphQL
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    806
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    數(shù)據(jù)濾波算法的具體實現(xiàn)步驟是怎樣的?

    (高頻電磁、瞬時脈沖等),選擇適配的濾波算法并落地。以下以電能質(zhì)量監(jiān)測中最常用的 IIR 低通濾波(抗高頻干擾)、滑動平均濾波(抗瞬時脈沖)、卡爾曼濾波(抗動態(tài)波動) 為例,詳解具體實現(xiàn)步驟: 一、前置準(zhǔn)備:明確濾波目標(biāo)與硬件基
    的頭像 發(fā)表于 10-10 16:45 ?828次閱讀

    基于 4G 技術(shù)的物流車車載監(jiān)控系統(tǒng)解決方案設(shè)計與實現(xiàn)

    基于 4G 技術(shù)的物流車車載監(jiān)控系統(tǒng)解決方案,旨在通過 4G 網(wǎng)絡(luò)的高速數(shù)據(jù)傳輸能力,實現(xiàn)對物流車輛的實時監(jiān)控、數(shù)據(jù)采集與遠(yuǎn)程管理,為供應(yīng)鏈運輸環(huán)節(jié)提供全鏈路的可視化與智能化支撐。其設(shè)計與實現(xiàn)
    的頭像 發(fā)表于 08-22 15:53 ?987次閱讀
    基于 4G 技術(shù)的物流車車載<b class='flag-5'>監(jiān)控</b>系統(tǒng)解決方案設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    如何通過 OP-TEE 使用 MA35D1 TSI 實現(xiàn)內(nèi)存塊的安全監(jiān)控功能?

    通過 OP-TEE 使用 MA35D1 TSI 實現(xiàn)內(nèi)存塊的安全監(jiān)控功能
    發(fā)表于 08-19 06:46

    無鉛焊接工藝有哪些步驟?

    無鉛焊接工藝的核心步驟如下,每個步驟均包含關(guān)鍵控制要點以確保焊接質(zhì)量:
    的頭像 發(fā)表于 08-01 09:13 ?911次閱讀

    【RA-Eco-RA6M4開發(fā)板評測】4、配合DA16200實現(xiàn)網(wǎng)頁監(jiān)控開發(fā)板

    /da16200-ultra-low-power-wi-fi-soc-battery-powered-iot-devices#documents, 設(shè)置DA16200模塊為服務(wù)端,通過HTTP協(xié)議,實現(xiàn)網(wǎng)頁控制板載LED燈和監(jiān)控按鍵
    發(fā)表于 07-23 15:47

    光伏系統(tǒng)監(jiān)控的內(nèi)容及其實現(xiàn)方法

    光伏系統(tǒng)監(jiān)控是指對光伏電站的設(shè)備狀態(tài)、發(fā)電性能及環(huán)境參數(shù)進(jìn)行實時監(jiān)測與管理的一種技術(shù),目的在于確保電站安全運行、提升發(fā)電效率、延長設(shè)備壽命,并為運維決策提供數(shù)據(jù)支持。如何通過采用科學(xué)化、智能化的技術(shù)手段來實現(xiàn)光伏系統(tǒng)的監(jiān)控?這是
    的頭像 發(fā)表于 07-02 17:18 ?749次閱讀

    通過御控APP實現(xiàn)PLC遠(yuǎn)程調(diào)試與遠(yuǎn)程監(jiān)控

    御控APP,通過移動化、智能化的手段,實現(xiàn)了PLC遠(yuǎn)程調(diào)試與監(jiān)控,為工業(yè)生產(chǎn)帶來了便捷與高效。
    的頭像 發(fā)表于 06-04 09:49 ?654次閱讀

    明遠(yuǎn)智睿SSD2351開發(fā)板:視頻監(jiān)控領(lǐng)域的卓越之選

    視頻還是多路視頻同時處理,都能輕松應(yīng)對,有效避免視頻卡頓、延遲等問題。 豐富的接口為視頻監(jiān)控系統(tǒng)的搭建和功能拓展提供了便利。USB接口可以連接高清攝像頭,實現(xiàn)高質(zhì)量的視頻采集;同時也可連接外部存儲設(shè)備
    發(fā)表于 05-30 10:24

    電機(jī)運行監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

    純分享帖,需要者可點擊附件免費獲取完整資料~~~*附件:電機(jī)運行監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn).pdf【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 05-26 02:19

    STM32與機(jī)智云連接實現(xiàn)步驟與技巧(下篇):機(jī)智云代碼移植與優(yōu)化

    在《STM32與機(jī)智云連接實現(xiàn)步驟與技巧(上篇)》中,我們介紹了硬件連接和通信協(xié)議配置。本篇將重點講解如何將機(jī)智云相關(guān)代碼移植到STM32,完成數(shù)據(jù)上傳和設(shè)備控制。我們將介紹如何在STM32中配置
    的頭像 發(fā)表于 05-23 18:10 ?1128次閱讀
    STM32與機(jī)智云連接<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>步驟</b>與技巧(下篇):機(jī)智云代碼移植與優(yōu)化

    STM32與機(jī)智云連接實現(xiàn)步驟與技巧(上篇)

    通過STM32與機(jī)智云的連接,開發(fā)者可以實現(xiàn)設(shè)備的遠(yuǎn)程控制和數(shù)據(jù)管理,提升物聯(lián)網(wǎng)應(yīng)用的智能化水平。本文將介紹STM32與機(jī)智云連接的具體步驟,涵蓋硬件連接、通信協(xié)議配置、數(shù)據(jù)傳輸及云平臺應(yīng)用開發(fā)等
    的頭像 發(fā)表于 05-23 18:10 ?1172次閱讀
    STM32與機(jī)智云連接<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>步驟</b>與技巧(上篇)

    EtherCAT轉(zhuǎn)ProfiNet實現(xiàn)工控機(jī)與IO設(shè)備高效通訊的配置步驟

    在工業(yè)自動化領(lǐng)域,生產(chǎn)線的高效運行對于提高生產(chǎn)效率、降低成本至關(guān)重要。許多先進(jìn)的生產(chǎn)線采用EtherCAT協(xié)議進(jìn)行設(shè)備之間的通信,以實現(xiàn)高速、實時的控制。然而,一些企業(yè)的上層管理系統(tǒng)和監(jiān)控設(shè)備采用ProfiNet協(xié)議,因此需要進(jìn)行協(xié)議轉(zhuǎn)換來
    的頭像 發(fā)表于 05-10 11:53 ?692次閱讀
    EtherCAT轉(zhuǎn)ProfiNet<b class='flag-5'>實現(xiàn)</b>工控機(jī)與IO設(shè)備高效通訊的配置<b class='flag-5'>步驟</b>

    openstack搭建詳細(xì)步驟

    openstack搭建詳細(xì)步驟
    的頭像 發(fā)表于 05-07 14:05 ?2032次閱讀

    #電阻柜監(jiān)控裝置如何操作?

    監(jiān)控裝置
    aozhuogeng
    發(fā)布于 :2025年04月11日 09:50:19

    革新科技!通過EtherCAT與Profinet網(wǎng)關(guān)實現(xiàn)溫濕度監(jiān)控,醫(yī)藥設(shè)備領(lǐng)域的智能革命來臨!

    "革新科技!通過EtherCAT與Profinet網(wǎng)關(guān)實現(xiàn)溫濕度監(jiān)控,醫(yī)藥設(shè)備領(lǐng)域的智能革命來臨!"
    的頭像 發(fā)表于 03-19 16:34 ?665次閱讀
    革新科技!通過EtherCAT與Profinet網(wǎng)關(guān)<b class='flag-5'>實現(xiàn)</b>溫濕度<b class='flag-5'>監(jiān)控</b>,醫(yī)藥設(shè)備領(lǐng)域的智能革命來臨!