【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中。

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