目錄
問題內容
解決方法
tl;博士
問題描述
訊息傳遞
總結
首頁 後端開發 Golang 收到另一個請求後提供 HTTP 請求的回應

收到另一個請求後提供 HTTP 請求的回應

Feb 09, 2024 pm 01:06 PM
資料遺失

收到另一个请求后提供 HTTP 请求的响应

php小編草莓在開發Web應用程式時,我們經常需要處理HTTP請求並提供相應的回應。當我們收到一個請求時,我們需要根據請求的內容和目的,產生適當的回應。這可能涉及查詢資料庫、處理表單資料、呼叫其他API等各種操作。在本文中,我們將探討如何在PHP中處理HTTP請求並提供相應的回應,以便為使用者提供更好的互動和使用者體驗。無論是建立一個簡單的靜態網頁還是一個複雜的Web應用程序,了解如何處理HTTP請求和產生回應都是非常重要的。

問題內容

我的用例是在從單獨的伺服器接收到另一個請求後提供 HTTP 請求的回應。

  1. 我希望以盡可能最好的方式做到這一點,同時牢記擴展性。
  2. 我們使用 Golang 1.19 和 Gin 框架。
  3. 伺服器將有多個 Pod,因此通道將無法運作。
  4. 所有請求都會逾時,初始請求將在 60 秒後逾時。

我目前的解決方案是使用共享緩存,其中每個 Pod 都會不斷檢查緩存。我相信,我可以透過通道來優化這一點,系統定期檢查任何已完成的回應,而不是逐一檢查快取。

我還想知道如何用其他程式語言實現它。

PS:這是基於設計的查詢,我在這裡有一些分享賞金的聲譽,因此在這裡詢問。如果問題不清楚,請隨時編輯。

解決方法

tl;博士

問題描述

因此,假設您的伺服器應用程式名稱為 server_app,例如有 3 個 pod:

+---------------------+
     |  server_app_service |
     +---------------------+
     |  server_app_pod_a   |
     |  server_app_pod_b   |
     |  server_app_pod_c   |
     +---------------------+
登入後複製

您的服務收到一個名為 "request a" 的請求,並決定將其傳遞給 server_app_pod_a。現在,您的 server_app_pod_a 將請求轉送到某個網關,並等待某種通知,以繼續處理客戶端的回應。如您所知,無法保證當網關執行 request b 時,服務會再次將其傳遞給 server_app_pod_a。即使這樣做,應用程式的狀態管理也將成為一項艱鉅的任務。

訊息傳遞

正如您可能已經注意到的,我在上一段中將“通知”一詞加粗,這是因為如果您認真考慮一下,request“b”看起來更像是帶有一些訊息的通知 而不是對某些資源的請求。所以我的第一個選擇是像 kafka 這樣的訊息隊列(如你所知,有很多這樣的訊息隊列)。這個想法是,如果您可以定義演算法來計算請求的唯一鍵,那麼您就可以在完全相同的 pod 中收到結果通知。這樣,狀態管理會更簡單,在同一個 pod 中獲得通知的機會也會更高(當然這取決於許多因素,例如訊息佇列的狀態)。看看您的問題:

  1. 我希望以盡可能最好的方式做到這一點,同時牢記擴展性。

當然,您可以像 kafka 一樣使用這些訊息佇列,以實現訊息佇列和應用程式的擴展並減少資料遺失。

  1. 所有請求都會逾時,初始請求將在 60 秒後逾時。

這取決於您如何管理程式碼庫中的逾時,使用上下文是一個好主意。

我還想知道如何用其他程式語言實現它。

使用訊息佇列是一個通用的想法,它適用於幾乎任何程式語言,但根據語言的程式設計範例以及特定於語言的程式庫和工具,可能還有其他一些方法來解決此問題。例如在scala 中,如果您使用一些名為akka 的特定工具(它提供了actor 模型程式設計範例),您可以使用所謂的akka-cluster-sharding 來處理這個問題。這個想法非常簡單,我們知道必須有某種監督者,它知道自己的訂閱者的確切位置和狀態。因此,當它收到一些訊息時,它只知道將請求轉發到何處以及哪個參與者(我們正在討論參與者模型程式設計)。換句話說,它可用於在叢集上產生的參與者之間共享狀態,無論是否在同一台機器上。但作為個人偏好,我不會選擇特定語言的交流,而是堅持一般的想法,因為這可能會在未來引起問題。

總結

足夠長的解釋:)。為了理解我所說的內容,讓我們追蹤完全相同的場景,但通訊模型有所不同:

  1. 客戶端向 server_app 服務發送請求「a」。
  2. 服務選擇其中一個 pod(例如 server_app_pod_b)來處理請求。
  3. 然後,pod 嘗試為請求定義一些金鑰,並將其與請求一起傳遞到網關,並等待帶有該金鑰的訊息在佇列中發布。
  4. 網關執行其應有的操作,並使用金鑰傳送訊息到訊息佇列。
  5. 完全相同的 pod serer_app_pod_b 接收帶有金鑰的訊息,取得訊息的數據,並繼續處理客戶端的請求。

可能還有其他方法可以解決這個問題,但這就是我想要的。希望對您有幫助!

以上是收到另一個請求後提供 HTTP 請求的回應的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

diskgenius資料怎麼恢復 diskgenius資料恢復教學課程 diskgenius資料怎麼恢復 diskgenius資料恢復教學課程 May 08, 2024 pm 02:22 PM

diskgenius資料怎麼恢復 diskgenius資料恢復教學課程

分割區工具diskgenius怎麼恢復檔案 分割區工具diskgenius恢復檔案的方法 分割區工具diskgenius怎麼恢復檔案 分割區工具diskgenius恢復檔案的方法 May 08, 2024 pm 02:25 PM

分割區工具diskgenius怎麼恢復檔案 分割區工具diskgenius恢復檔案的方法

掃描全能王怎麼恢復刪除的檔案_掃描全能王恢復刪除檔案的方法 掃描全能王怎麼恢復刪除的檔案_掃描全能王恢復刪除檔案的方法 May 07, 2024 am 10:22 AM

掃描全能王怎麼恢復刪除的檔案_掃描全能王恢復刪除檔案的方法

主機板電池用多久 主機板電池用多久 May 08, 2024 pm 09:04 PM

主機板電池用多久

手機格式化恢復方法大揭密(手機故障?別急) 手機格式化恢復方法大揭密(手機故障?別急) May 04, 2024 pm 06:01 PM

手機格式化恢復方法大揭密(手機故障?別急)

手機影片轉換MP4最簡單的方法(快速轉換手機影片為MP4格式的技巧) 手機影片轉換MP4最簡單的方法(快速轉換手機影片為MP4格式的技巧) May 08, 2024 pm 08:43 PM

手機影片轉換MP4最簡單的方法(快速轉換手機影片為MP4格式的技巧)

CrystalDiskInfo硬碟偵測工具如何設定磁碟高溫警報_CrystalDiskInfo硬碟偵測工具設定磁碟高溫警報的方法 CrystalDiskInfo硬碟偵測工具如何設定磁碟高溫警報_CrystalDiskInfo硬碟偵測工具設定磁碟高溫警報的方法 May 07, 2024 am 10:01 AM

CrystalDiskInfo硬碟偵測工具如何設定磁碟高溫警報_CrystalDiskInfo硬碟偵測工具設定磁碟高溫警報的方法

如何進行手機強制恢復出廠設定(詳細步驟教你快速恢復手機原始狀態) 如何進行手機強制恢復出廠設定(詳細步驟教你快速恢復手機原始狀態) May 06, 2024 pm 09:46 PM

如何進行手機強制恢復出廠設定(詳細步驟教你快速恢復手機原始狀態)

See all articles