PERF05-BP05 選擇網路通訊協定以提高效能 - AWS Well-Architected 架構

PERF05-BP05 選擇網路通訊協定以提高效能

評估您的工作負載的效能要求,並且選擇可最佳化您的工作負載整體效能的網路通訊協定。

實現輸送量的延遲和頻寬之間存在關係。例如,如果您的檔案傳輸使用傳輸控制協定 (TCP),較高的延遲會降低整體輸送量。有一些方法可以使用 TCP 調校和最佳化的傳輸通訊協定來解決這個問題 (有些方法則會使用使用者資料包協定 (UDP))。

可擴展可靠資料包 (SRD) 通訊協定是 AWS 針對提供可靠資料包交付的 Elastic Fabric Adapter 所建置的網路傳輸通訊協定。與 TCP 通訊協定不同,SRD 可以重新排序封包並且不依序交付它們。SRD 的這個不依序交付機制會透過替代路徑平行傳送封包,增加輸送量。

常見的反模式:

  • 無論效能需求為何,都可以將 TCP 用於所有工作負載。

建立此最佳實務的優勢:

  • 為工作負載元件之間的通訊選擇適當的通訊協定,便可確保達到該工作負載的最佳效能。

  • 確認針對使用者與工作負載元件之間的通訊使用適當的通訊協定,可協助改善您的應用程式的整體使用者體驗。例如,藉由同時使用 TCP 和 UDP,VDI 工作負載可以針對關鍵資料利用 TCP 的可靠性,針對即時資料利用 UDP 的速度。

未建立此最佳實務時的曝險等級:中 (使用不適當的網路通訊協定會導致效能不佳,例如緩慢的回應時間、高延遲和可擴展性不佳)

實作指引

改善您的工作負載效能的主要考慮是了解延遲和輸送量要求,然後選擇可最佳化效能的網路通訊協定。

考慮使用 TCP 的時機

TCP 提供可靠的資料交付,並且可用於可靠性和保證資料交付很重要的工作負載元件間通訊。許多 Web 式應用程式仰賴 TCP 型通訊協定,例如 HTTP 和 HTTPS,針對與 AWS 上的伺服器的通訊開啟 TCP 通訊端。電子郵件和檔案資料傳輸是也會使用 TCP 的常見應用程式,原因是 TCP 控制資料交換率和網路壅塞的能力。使用 TLS 與 TCP 會對通訊增加一些負擔,導致提高延遲和降低輸送量。負擔主要來自交握處理的增加負擔,需要數個往返才能完成。一旦交握完成,加密和解密資料的負擔相對小。

考慮使用 UDP 的時機

UDP 是無連線導向的通訊協定,因此適用於需要快速、有效傳輸的應用程式,例如日誌、監控和 VoIP 資料。此外,如果您有會回應來自大量用戶端之小型查詢的工作負載元件,請考慮使用 UDP,以確保最佳工作負載效能。資料包傳輸層安全性 (DTLS) 是等同於 TLS 的 UDP。使用 DTLS 與 UDP 時,負擔是來自加密和解密資料,因為交握處理已簡化。DTLS 也會對 UDP 封包增加小量負擔,因為它包含額外欄位以指出安全參數以及偵測竄改。

考慮使用 SRD 的時機

Scalable Reliable Datagram (SRD) 是針對高輸送量工作負載最佳化的網路傳輸通訊協定,因為它能夠在多個路徑之間負載平衡流量,並且快速從封包捨棄或連結失敗復原。因此 SRD 最適合用於需要運算節點之間高輸送量和低延遲通訊的高效能運算 (HPC) 工作負載。這可能包含平行處理任務,例如牽涉到在節點之間大量資料傳輸的模擬、建模和資料分析。

實作步驟

  1. 使用 AWS Global AcceleratorAWS Transfer Family 服務來改善您的線上檔案傳輸應用程式的輸送量。AWS Global Accelerator 服務可協助您達成用戶端裝置與 AWS 上工作負載之間的較低延遲。使用 AWS Transfer Family,您可以使用 TCP 型通訊協定,例如 Secure Shell File Transfer Protocol (SFTP) 和 File Transfer Protocol over SSL (FTPS),安全地擴展和管理您對於 AWS 儲存服務的檔案傳輸。

  2. 使用網路延遲來判斷 TCP 是否適合工作負載元件之間的通訊。如果您的用戶端應用程式與伺服器之間的網路延遲高,則 TCP 三向交握會耗費一些時間,因此會影響您的應用程式的回應能力。例如到第一個位元組的時間 (TTFB) 和往返時間 (RTT) 等指標可用來測量網路延遲。如果您的工作負載為使用者提供動態內容的服務,請考慮使用 Amazon CloudFront,這會建立與每個動態內容來源的持久性連線,消除會減緩每個用戶端請求的連線設定時間。

  3. 使用 TLS 與 TCP 或 UDP 會由於加密和解密的影響,導致對您的工作負載增加延遲和減少輸送量。針對此類工作負載,請考慮 Elastic Load Balancing 上的 SSL/TLS 卸載,藉由允許負載平衡器處理 SSL/TLS 加密和解密程序而不是讓後端執行個體進行處理,來改善工作負載效能。這可協助減少後端執行個體上的 CPU 使用率,可以改善效能和增加容量。

  4. 使用 Network Load Balancer (NLB) 來部署依賴 UDP 通訊協定的服務,例如身分驗證和授權、記錄、DNS、IoT 和串流媒體,改善您的工作負載的效能和可靠性。NLB 會在多個目標之間分散傳入 UDP 流量,讓您水平地擴展工作負載、增加容量以及減少單一目標的負擔。

  5. 針對您的高效能運算 (HPC) 工作負載,請考慮使用彈性網路介面卡 (ENA) 快速版功能,該功能使用 SRD 通訊協定來改善網路效能,方法是針對 EC2 執行個體之間的網路流量提供較高的單一流量頻寬 (25Gbps) 和較低的尾端延遲 (99.9 百分位數)。

  6. 使用 Application Load Balancer (ALB) 來路由和負載平衡工作負載元件之間的 gRPC (遠端程序呼叫) 流量或已啟用 gRPC 的用戶端與服務之間的流量。gRPC 會使用 TCP 型 HTTP/2 通訊協定進行傳輸,並且提供如較輕網路足跡、壓縮、有效二進位序列化、支援多種語言和雙向串流的優點。

資源

相關文件:

相關影片:

相關範例: