【CDP-雲設計模式】第6章,1.寫代理模式(Write Proxy Pattern)

1.要解決的問題

  通常,對於讀取信息網絡存儲具有極大的容量和極高的數據持久性。然而,爲了保證冗餘,數據不僅要被寫在多處,而且客戶端之間的通信是通過HTTP協議的。結果導致寫的速度比較慢。因此,當向網絡存儲寫大文件時會出現性能問題。

2.雲模式的說明

  我們不將數據直接由客戶端傳至網絡存儲,而是設置數據由一臺虛擬服務器接收,然後再從這臺虛擬服務器轉發給網絡存儲。從客戶端到虛擬服務器的傳輸可以使用比HTTP更快的協議(例如,一個基於UDP的協議)。
  
  對於大量的小文件,他們會先在客戶端存檔,再傳到虛擬服務器上進行解壓,接着轉發至網絡存儲上。如果虛擬服務器和網絡存儲在同一個地區,那麼會通過專用線路進行連接,和直接傳輸到網絡存儲相比,這樣大大減少了由虛擬服務器傳輸的總時間。

3.實施

  • 啓動一個EC2實例用於接收數據。在同一地區啓動一個EC2實例作爲亞馬遜S3,即數據存儲的最終目的地。

  • 在EC2實例上安裝一個FTP服務器或web服務器,以及UDP傳輸軟件,例如Aspera或TsunamiUDP,或是其他可以加快傳輸速度的軟件。(這個服務器即所謂的“上傳服務器”。)

  • 將數據從客戶端傳輸至上傳服務器中。如果是大量的小文件,先在客戶端將它們組合爲一個單獨的文件。

  • 傳輸至上傳服務器後(或作爲一個順序操作),從該服務器上傳至S3中。如果數據在客戶端被壓縮,那麼在上傳服務器中解壓後再傳到S3中。

4.配置

圖1

5.好處

  • 這可以提高傳輸數據至S3的速度。

  • 特別的,當上傳數據至外國某地區的S3時,你會發現傳輸速度的大幅增長。

6.注意事項

  • 因爲在某些情況下寫入EC2實例(即上傳服務器)的速度(通常爲寫入EBS的速度)可能會成爲瓶頸,你可能需要執行磁盤條帶化(參見按需磁盤模式)來提高寫入性能。

  • 因爲小規格的EC2實例的通道比較窄,如果要求較高性能時可以使用大規格的實例。

7.其他

  • 使用UDP來提高數據傳輸速度的方法包括TsunamiUDP、Aspera、SkeedSilverBullet等等。

  • 你可以將文件分解爲多個部分然後並行地寫入(即多部分處理),用以提高寫入S3的性能。

  • 這不僅可以提高速度,還可以爲用戶帶來方便,例如,用戶只需通過使用FTP上傳內容至EC2實例,然後數據就會自動同步到S3中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章