使用 GraphQL 作為 API 網關來監控微服務
導讀:在問題導致關鍵的微服務癱瘓之前,使用 GraphQL 的監控功能幫助你及早發現問題。
本文字數:2123,閱讀時長大約:3分鐘
https://linux.cn/article-12588-1.html
作者:Rigin Oommen
譯者:geekpi
微服務和GraphQL就像麵包和黃油一樣,是一個很好的組合。它們本身都很棒,結合起來就更棒了。了解你的微服務的健康狀況是很重要的,因為它們運行著重要的服務。如果等到某個關鍵的服務崩潰了才診斷問題,那是很愚蠢的。讓 GraphQL 幫助你及早發現問題並不需要花費太多精力。
GraphQL in Microservices
常規的健康檢查可以讓你觀察和測試你的服務,在問題影響到你的業務、客戶或項目之前,儘早得到通知。說起來很簡單,但健康檢查到底要做什麼呢?
以下是我在設計服務檢查時考慮的因素:
伺服器健康檢查的要求:
1. 我需要了解我的微服務的可用性狀態。
2. 我希望能夠管理伺服器的負載。
3. 我希望對我的微服務進行端到端(e2e)測試。
4. 我應該能夠預測中斷。
Service health in microservices
做伺服器健康檢查的方法
進行健康檢查可能比較棘手,因為理論上,你可以檢查的東西幾乎是無窮無盡的。我喜歡從小處著手,運行最基本的測試:ping 測試。這只是測試運行應用的伺服器是否可用。然後,我加強測試以評估特定問題,思考伺服器中最重要的元素。我想到那些如果突然消失的話將是災難性的事情。
1. **Ping 檢查:**Ping 是最簡單的監控類型。它只是檢查你的應用是否在線。
2. **腳本化瀏覽器:**腳本化瀏覽器比較高級。像Selenium這樣的瀏覽器自動化工具可以讓你實現自定義的監控規則集。
3. **API 測試:**API 測試用於監控 API 端點。這是 ping 檢查模型的高級版本,你可以根據 API 響應來定義監控計劃。
使用 GraphQL 進行健康檢查
在一個典型的基於 REST 的微服務中,你需要從頭開始構建健康檢查功能。這是一個時間密集型的過程,但使用 GraphQL 就不用擔心了。
根據它的網站稱:
「GraphQL 是一種用於 API 的查詢語言,也是一種用現有數據完成這些查詢的運行時環境。GraphQL 為你的 API 中的數據提供了一個完整的、可理解的描述,讓客戶有能力精確地僅查詢他們所需要的東西,讓 API 更容易隨著時間的推移而進化,並實現強大的開發者工具。」
當你啟動一個 GraphQL 微服務時,你還可以獲得監控微服務的運行狀況的供給。這是一個隱藏的寶貝。
正如我上面提到的,你可以用 GraphQL 端點執行 API 測試以及 ping 檢查。
Apollo GraphQL 伺服器提供了一個默認的端點,它可以返回有關你的微服務和伺服器健康的信息。它不是很複雜:如果伺服器正在運行,它就會返回狀態碼 200。
默認端點是?。
Health Check with GraphQL
高級健康檢查
在某些情況下,基本的健康檢查可能不足以確保系統的完整性。例如,緊密耦合的系統需要更多的業務邏輯來確保系統的健康。
Apollo GraphQL 在定義伺服器的同時,通過聲明一個??函數來有效地管理這種情況。
當你定義一個??方法時,它返回一個 promise,如果伺服器準備好了,它就會返回?,如果有錯誤,它就會返回?。
GraphQL 讓監控 API 變得更容易。此外,在你的伺服器基礎架構中使用它可以使代碼變得可擴展。如果你想嘗試採用 GraphQL 作為你的新基礎設施定義,請參見我的 GitHub 倉庫中的示例代碼和配置。
via:https://opensource.com/article/20/8/microservices-graphql
作者:Rigin Oommen選題:lujun9972譯者:geekpi校對:wxy
本文由LCTT原創編譯,Linux中國榮譽推出