258-更高效实惠的服务器文件下载方式——OSS
刘小泽写于2022.7.7
前言
之前介绍过: 如何让你的云服务器具有上传下载文件的功能?
可以实现服务器搭建FTP用来下载数据,但既然是搭建在服务器上,就非常依赖服务器的内存和带宽,因为它们会影响用户数量和访问速度。当然如果数据不大,可以采用这种方式,也比较方便。
如果你的数据很多,目标用户群比较大的时候,更高效的下载方式——OSS就会帮到你
什么是OSS?
参考:https://help.aliyun.com/product/31815.html
对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。
我之前博客的图床其实就是利用了OSS,主要存储博客中的图片,根据访问量按天收费(其实一天也就几毛钱)
除了图片,OSS的另一个功能就是存储数据。不知道你注意没有,很多科技服务公司给你返回的数据就需要用他们的OSS browser
软件去下载(销售会给你一个AccessKeySecret
, AccessKeyId
)用来访问加密的数据。
OSS不需要自己配置服务器,不用担心服务器配置够不够用,只需要考虑用多大的空间,以及需不需要上传下载加速服务(需要单独按流量计费)
OSS传输加速利用全球分布的云机房,将全球各地用户对存储空间(Bucket)的访问,经过智能路由解析至就近的接入点,使用优化后的网络及协议,为云存储互联网的上传、下载提供端到端的加速方案。远距离数据传输加速就是使用场景之一。
计费方式
需要注意:不同地区的存储流量和加速流量不通用,如果你的数据目标用户同时包括海内外,那么需要买多个资源包:
有了OSS之后能干啥
这里以阿里云为例,购买成功以后会进入到OSS console
首先创建Bucket
Bucket可以认为是一个个的数据存储桶,每个桶可以分门别类,存储不同的数据,或者把数据存在不同地域
为了允许其他用户访问,这里不加密,并且设置公共读
然后选择是否传输加速
使用场景如下:
远距离数据传输加速
例如全球性的论坛、Top在线协同办公平台等,部分客户会因传输距离较远导致上传和下载体验非常差。传输加速功能可以让全球各地的客户使用优化后的网络来传输数据,极大地提升上传和下载速度,让不同地域的用户都能有很好的访问体验。
GB、TB级大文件上传和下载
通过互联网远距离上传和下载大文件时,经常会因为网络延迟过大而导致传输失败。传输加速功能使用优化的互联网传输链路、调优的协议栈与传输算法,可大幅减少远距离互联网传输超时的比例。您还可以让传输加速功能与分片上传、断点续传下载结合,形成远距离大文件上传和下载的解决方案。
非静态、非热点数据下载加速
例如相册应用、游戏、电商、社交应用的评论内容、企业门户网站、金融类APP等,用户的下载体验直接影响产品竞争力和客户留存率。传输加速功能作为专为OSS上传、下载加速而设计的功能,可以最大限度利用客户端的网络能力,提升用户的下载体验。
上传文件
将要配置的文件批量上传到这里,可以直接拖拽文件夹
另外,我这里选择了加速服务
【可选】添加域名
常规的访问域名是:bucket名称.oss-cn-区域.aliyuncs.com
,加速域名是:bucket名称.oss-accelerate.aliyuncs.com
这样写进代码不是很美观,并且给别人分享也不上档次,所以如果手头正好有闲置的域名,就可以用起来
在:传输管理
=》域名管理
=》绑定域名
=》然后需要在域名服务商那里进行验证,验证通过后就可以直接用自己的域名代替上面的长域名
【需要注意的是:因为OSS服务还是在境内,所以域名依然需要备案才能用。如果感觉备案麻烦,就先用长的域名过渡一下吧】
以上就是对于一个存储桶的配置,如果你想同时配置多个区域的数据存储,就把上面的步骤重复多次,只是每次换个bucket的区域即可
最后就可以下载了
url = "bioinfoplanet.oss-accelerate.aliyuncs.com/test/logo.png"
# downloader::download(url,destfile = 'logo.png')
utils::download.file(url, destfile = 'logo.png')