【CDP-云设计模式】第6章,1.写代理模式(Write Proxy Pattern)
来源:互联网 发布:怎么解决淘宝自主访问 编辑:程序博客网 时间:2024/06/05 19:42
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中。
- 【CDP-云设计模式】第6章,1.写代理模式(Write Proxy Pattern)
- 【CDP-云设计模式】第4章,7.改写代理模式(Rewrite Proxy Pattern)
- 【CDP-云设计模式】第4章,8.缓存代理模式(Cache Proxy Pattern)
- 【CDP-云设计模式】第7章,4.分片写模式(Sharding Write Pattern)
- 【CDP-云设计模式】第2章,1.快照模式(Snapshot Pattern)
- 【CDP-云设计模式】第3章,1.多服务器模式(Multi-Server Pattern)
- 【CDP-云设计模式】第4章,1.横向扩展模式(Scale Out Pattern)
- 【CDP-云设计模式】第5章,1.网络存储模式(Web Storage Pattern)
- 【CDP-云设计模式】第7章,1.数据库复制模式(DB Replication Pattern)
- 【CDP-云设计模式】第8章,1.队列链表模式(Queuing Chain Pattern)
- 【CDP-云设计模式】第9章,1.引导程序模式(Bootstrap Pattern)
- 【CDP-云设计模式】第6章,2.存储索引模式(Storage Index Pattern)
- 【CDP-云设计模式】第2章,2.印章模式(Stamp Pattern)
- 【CDP-云设计模式】第2章,3.纵向扩展模式(Scale Up Pattern)
- 【CDP-云设计模式】第3章,2.多数据中心模式(Multi-Datacenter Pattern)
- 【CDP-云设计模式】第3章,3.浮动IP模式(Floating IP Pattern)
- 【CDP-云设计模式】第4章,2.克隆服务器模式(Clone Server Pattern)
- 【CDP-云设计模式】第4章,3.NFS共享模式(NFS Sharing Pattern)
- Android图片加载与缓存开源框架:Android Glide
- Struts2 我的第一个Helloworld
- Rxlifecycle使用详解,解决RxJava内存泄露问题
- ACM解题总结——HihoCoder1199 (微软笔试题)
- Android01 Android开发环境搭建和HelloWorld
- 【CDP-云设计模式】第6章,1.写代理模式(Write Proxy Pattern)
- 使用读写锁简单实现缓存的实例
- 营救公主(华为OJ)
- Selector选择器和为控件添加边框的问题
- JAVA集合容器--概述
- Python字典与文件
- leetcode SQL题目 177. Nth Highest Salary
- poj 2570 floyd 二进制+位运算
- NOIP2010 乌龟棋 解题报告(4维DP)