在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

如意 ? 來(lái)源:百家號(hào) ? 作者:51CTO ? 2020-06-28 14:16 ? 次閱讀

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

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

GraphQL架構(gòu)

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

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

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

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

通過(guò)解析schema,GraphQL后端會(huì)讓服務(wù)器了解到哪種解析器能夠處理哪種類型的查詢。也就是說(shuō),當(dāng)一個(gè)查詢被發(fā)送到GraphQL端點(diǎn)時(shí),GraphQL引擎會(huì)解析該查詢中的每一種請(qǐng)求類型,進(jìn)而調(diào)用解析器來(lái)滿足其請(qǐng)求。可以想象,此類方法僅限于在與簡(jiǎn)單查詢一起使用時(shí),才能提供卓越的性能。

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

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

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

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

監(jiān)控GraphQL

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

HTTP端點(diǎn):針對(duì)那些影響到我們API的所有流量。

GraphQL查詢:針對(duì)每個(gè)特定的查詢。

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

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

1. HTTP端點(diǎn)

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

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

2. GraphQL查詢

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

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

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

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

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

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

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

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

正如我們?cè)谇懊嬗懻撨^(guò)的:解析器只能允許我們監(jiān)控單個(gè)解析器的運(yùn)作;而數(shù)據(jù)加載器使我們能夠在一個(gè)請(qǐng)求中查看到所有解析器的工作。那么,數(shù)據(jù)加載器的另一個(gè)附帶好處便是:我們能夠發(fā)現(xiàn)解析器之間的問(wèn)題,并及時(shí)予以解決。

4. 全棧跟蹤

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

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

結(jié)論

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

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

    關(guān)注

    21

    文章

    4038

    瀏覽量

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

    關(guān)注

    2

    文章

    1563

    瀏覽量

    63607
  • GraphQL
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    654
收藏 人收藏

    評(píng)論

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

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

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

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

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

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

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

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

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

    Apis Partners支持的Giift全球更名為Xoxoday

    新加坡2025年3月5日 /美通社/ -- Giift,一家由Apis Partners支持、全球領(lǐng)先的人工智能驅(qū)動(dòng)忠誠(chéng)度和獎(jiǎng)勵(lì)SaaS商務(wù)企業(yè),今天宣布其全球更名為Xoxoday(發(fā)音為
    的頭像 發(fā)表于 03-05 14:47 ?255次閱讀

    BP神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)步驟詳解

    BP神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)步驟主要包括以下幾個(gè)階段:網(wǎng)絡(luò)初始化、前向傳播、誤差計(jì)算、反向傳播和權(quán)重更新。以下是對(duì)這些步驟的詳細(xì)解釋: 一、網(wǎng)絡(luò)初始化 確定網(wǎng)絡(luò)結(jié)構(gòu) : 根據(jù)輸入和輸出數(shù)據(jù)的特性,確定
    的頭像 發(fā)表于 02-12 15:50 ?544次閱讀

    涂鴉智能與Google Home APIs全面對(duì)接,共筑無(wú)縫智能家居新生態(tài)

    ? 近日,全球化云開發(fā)者平臺(tái)涂鴉智能(NYSE: TUYA,HKEX: 2391)正式宣布其賦能的智能生態(tài)與Google Home APIs實(shí)現(xiàn)全面對(duì)接。這一合作不僅標(biāo)志著雙方在智能生態(tài)領(lǐng)域得到
    的頭像 發(fā)表于 02-12 09:36 ?312次閱讀
    涂鴉智能與Google Home <b class='flag-5'>APIs</b>全面對(duì)接,共筑無(wú)縫智能家居新生態(tài)

    如何實(shí)現(xiàn)數(shù)字孿生?分為以下四步驟

    和優(yōu)化管理。下面我將詳細(xì)介紹如何實(shí)現(xiàn)數(shù)字孿生以及相關(guān)的關(guān)鍵步驟和技術(shù)。 首先,實(shí)現(xiàn)數(shù)字孿生的關(guān)鍵在于數(shù)據(jù)的采集、建模、分析和反饋,具體步驟如下: 1.數(shù)據(jù)采集: 通過(guò)各種傳感器、
    的頭像 發(fā)表于 11-29 13:57 ?1401次閱讀

    LORA模塊如何實(shí)現(xiàn)遠(yuǎn)程監(jiān)控

    隨著物聯(lián)網(wǎng)(IoT)技術(shù)的快速發(fā)展,遠(yuǎn)程監(jiān)控系統(tǒng)變得越來(lái)越重要。這些系統(tǒng)能夠?qū)崟r(shí)收集和分析數(shù)據(jù),從而提高效率、降低成本并增強(qiáng)安全性。LoRa技術(shù)作為一種新興的無(wú)線通信技術(shù),以其獨(dú)特的優(yōu)勢(shì)在遠(yuǎn)程監(jiān)控
    的頭像 發(fā)表于 10-31 18:18 ?3196次閱讀

    通過(guò)Vf監(jiān)控實(shí)現(xiàn)LED溫度保護(hù)

    電子發(fā)燒友網(wǎng)站提供《通過(guò)Vf監(jiān)控實(shí)現(xiàn)LED溫度保護(hù).pdf》資料免費(fèi)下載
    發(fā)表于 09-25 10:01 ?0次下載
    通過(guò)Vf<b class='flag-5'>監(jiān)控</b><b class='flag-5'>實(shí)現(xiàn)</b>LED溫度保護(hù)

    在汽車、寬VIN應(yīng)用中實(shí)現(xiàn)電壓監(jiān)控

    電子發(fā)燒友網(wǎng)站提供《在汽車、寬VIN應(yīng)用中實(shí)現(xiàn)電壓監(jiān)控.pdf》資料免費(fèi)下載
    發(fā)表于 09-18 10:58 ?0次下載
    在汽車、寬VIN應(yīng)用中<b class='flag-5'>實(shí)現(xiàn)</b>電壓<b class='flag-5'>監(jiān)控</b>

    在牽引逆變器設(shè)計(jì)中實(shí)現(xiàn)電壓基準(zhǔn)和監(jiān)控

    電子發(fā)燒友網(wǎng)站提供《在牽引逆變器設(shè)計(jì)中實(shí)現(xiàn)電壓基準(zhǔn)和監(jiān)控器.pdf》資料免費(fèi)下載
    發(fā)表于 09-18 10:30 ?0次下載
    在牽引逆變器設(shè)計(jì)中<b class='flag-5'>實(shí)現(xiàn)</b>電壓基準(zhǔn)和<b class='flag-5'>監(jiān)控</b>器

    如何創(chuàng)建TestStand自定義步驟

    在之前的課程中簡(jiǎn)單地介紹過(guò)TestStand自帶的一些步驟類型,如測(cè)試、消息彈窗、賦值、標(biāo)簽等等,這些簡(jiǎn)單的步驟從TestStand的插入選版中就可以添加到序列中。那么在使用中如果碰到需要實(shí)現(xiàn)更加靈活、復(fù)雜的功能,使用自帶的一些
    的頭像 發(fā)表于 09-11 14:46 ?2236次閱讀
    如何創(chuàng)建TestStand自定義<b class='flag-5'>步驟</b>

    降壓轉(zhuǎn)換器實(shí)現(xiàn)出色PCB布局的五個(gè)步驟

    電子發(fā)燒友網(wǎng)站提供《降壓轉(zhuǎn)換器實(shí)現(xiàn)出色PCB布局的五個(gè)步驟.pdf》資料免費(fèi)下載
    發(fā)表于 08-26 14:52 ?1次下載
    降壓轉(zhuǎn)換器<b class='flag-5'>實(shí)現(xiàn)</b>出色PCB布局的五個(gè)<b class='flag-5'>步驟</b>

    養(yǎng)豬管理如何實(shí)現(xiàn)遠(yuǎn)程監(jiān)控

    養(yǎng)豬管理如何實(shí)現(xiàn)遠(yuǎn)程監(jiān)控? 在現(xiàn)代化農(nóng)業(yè)快速發(fā)展的背景下,養(yǎng)豬管理的智能化與遠(yuǎn)程監(jiān)控技術(shù)的應(yīng)用日益成為提升養(yǎng)殖效率、保障動(dòng)物健康及優(yōu)化資源配置的關(guān)鍵手段。實(shí)現(xiàn)養(yǎng)豬管理的遠(yuǎn)程
    的頭像 發(fā)表于 07-17 17:26 ?615次閱讀
    養(yǎng)豬管理如何<b class='flag-5'>實(shí)現(xiàn)</b>遠(yuǎn)程<b class='flag-5'>監(jiān)控</b>?
    主站蜘蛛池模板: 97色婷婷成人综合在线观看 | 亚洲综合五月天婷 | 天天cao在线 | 欧美性xxxxxbbbbbb精品 | 色444| 亚洲合集综合久久性色 | 夜夜橹橹网站夜夜橹橹 | 亚洲国产网 | 色综合久久88色综合天天 | 午夜看片免费 | 夜夜福利| 美女扒开尿口给男人捅 | 国产黄网站在线观看 | 啪啪黄色片 | 人人草人人射 | 国产精品免费看久久久 | 久久婷婷色一区二区三区 | 韩国午夜精品理论片西瓜 | jiuse视频| 成人理论片 | 欧美a网站 | 黑人一区二区三区中文字幕 | 日本高清www | 亚洲人在线 | 国产三级视频 | 夜夜操网站 | 免费精品 | 轻点灬大ji巴太大太深了 | 亚洲人成网站色7777 | 亚洲wwwwww| 午夜一级精品免费毛片 | 婷婷午夜天 | 伊人不卡久久大香线蕉综合影院 | 欧美性hd| 欧美成人综合在线 | aa小视频| 三级网址在线播放 | 四虎成人免费观看在线网址 | 大美女久久久久久j久久 | 免费观看a毛片一区二区不卡 | www.亚洲成人|