1.要解決的問題
通常,對於讀取信息網絡存儲具有極大的容量和極高的數據持久性。然而,爲了保證冗餘,數據不僅要被寫在多處,而且客戶端之間的通信是通過HTTP協議的。結果導致寫的速度比較慢。因此,當向網絡存儲寫大文件時會出現性能問題。
2.雲模式的說明
我們不將數據直接由客戶端傳至網絡存儲,而是設置數據由一臺虛擬服務器接收,然後再從這臺虛擬服務器轉發給網絡存儲。從客戶端到虛擬服務器的傳輸可以使用比HTTP更快的協議(例如,一個基於UDP的協議)。
對於大量的小文件,他們會先在客戶端存檔,再傳到虛擬服務器上進行解壓,接着轉發至網絡存儲上。如果虛擬服務器和網絡存儲在同一個地區,那麼會通過專用線路進行連接,和直接傳輸到網絡存儲相比,這樣大大減少了由虛擬服務器傳輸的總時間。
3.實施
啓動一個EC2實例用於接收數據。在同一地區啓動一個EC2實例作爲亞馬遜S3,即數據存儲的最終目的地。
在EC2實例上安裝一個FTP服務器或web服務器,以及UDP傳輸軟件,例如Aspera或TsunamiUDP,或是其他可以加快傳輸速度的軟件。(這個服務器即所謂的“上傳服務器”。)
將數據從客戶端傳輸至上傳服務器中。如果是大量的小文件,先在客戶端將它們組合爲一個單獨的文件。
傳輸至上傳服務器後(或作爲一個順序操作),從該服務器上傳至S3中。如果數據在客戶端被壓縮,那麼在上傳服務器中解壓後再傳到S3中。
4.配置
5.好處
這可以提高傳輸數據至S3的速度。
特別的,當上傳數據至外國某地區的S3時,你會發現傳輸速度的大幅增長。
6.注意事項
因爲在某些情況下寫入EC2實例(即上傳服務器)的速度(通常爲寫入EBS的速度)可能會成爲瓶頸,你可能需要執行磁盤條帶化(參見按需磁盤模式)來提高寫入性能。
因爲小規格的EC2實例的通道比較窄,如果要求較高性能時可以使用大規格的實例。
7.其他
使用UDP來提高數據傳輸速度的方法包括TsunamiUDP、Aspera、SkeedSilverBullet等等。
你可以將文件分解爲多個部分然後並行地寫入(即多部分處理),用以提高寫入S3的性能。
這不僅可以提高速度,還可以爲用戶帶來方便,例如,用戶只需通過使用FTP上傳內容至EC2實例,然後數據就會自動同步到S3中。