Amazon-S3
為什麼亞馬遜建議在 S3 下載期間盡快讀取“所有數據”?
在閱讀有關 Amazon S3 Java SDK 的官方文件時,我發現了一個有趣的註釋:
在您讀取所有數據或關閉輸入流之前,您的網路連接將保持打開狀態。我們建議您盡快閱讀流的內容。
我的問題是,為什麼亞馬遜建議盡快讀取數據,而不是將其流式傳輸到數據管道中,在那裡我們可以逐行處理數據?我在亞馬遜的文件網站和他們的定價頁面上都找不到答案。沒有任何地方提到長期 HTTP 連接會花費更多。因此尋求社區的一些意見。
謝謝
原因是因為您本質上是直接從網路套接字中讀取字節。SDK 不會為您在記憶體或磁碟上緩衝整個對象。
S3 服務 - 與任何 Web 服務一樣 - 不會容忍客戶端對套接字的過度停頓/阻塞。服務施加的特定超時沒有記錄,但是這個警告背後的想法是你不想只是把它放在一邊並期望它會保持無限可用——就像所有東西都被提取和隱藏一樣當地某處。
您閱讀的速度或速度不會對財務產生影響。這是關於可靠性的,因為閒置/停滯的 TCP 連接最終將被關閉。S3 不會在同一個套接字上多路復用多個同時操作,因此如果連接意外關閉,與服務的其他互動不會受到影響。
如果有效地完成,此建議不一定排除逐行流處理。
¹本質上但不完全是,因為 TLS。