镜像回源主要用于无缝迁移数据到OSS,即服务已经在自己建立的源站或者在其他云产品上运行,需要迁移到OSS上,但是又不能停止服务,此时可利用镜像回写功能实现。
管理回源设置_管理文件_开发指南_对象存储 OSS-阿里云 https://help.aliyun.com/document_detail/31865.html
通过回源设置,对于获取数据的请求以多种方式进行回源读取,满足您对于数据热迁移、特定请求重定向等需求。
通过规则的方式,对每条到OSS的Get请求的URL进行匹配,然后按照特定的方式进行回源。最多配置5条规则,顺序匹配,直到匹配到有效规则。回源类型分为镜像方式和重定向的方式。
镜像方式
如果配置了镜像回写,则对一个不存在的文件进行Get操作时,会向源地址请求这个文件,返回给用户,并同时写入到OSS。
镜像回源主要用于无缝迁移数据到OSS,即服务已经在自己建立的源站或者在其他云产品上运行,需要迁移到OSS上,但是又不能停止服务,此时可利用镜像回写功能实现。具体场景分析如下:
源站有一批冷数据,同时在不断的生成新的热数据。
可以先通过迁移工具将冷数据迁移到OSS上,迁移工具为OssImport,同时配置镜像回写,将源站的地址配置到OSS上。当将域名切换到OSS上(或者阿里云的CDN,回源到OSS)之后,就算有一部分新生成的数据没有迁移过来,依然可以在OSS上正常访问到,且访问一次后文件就会存入到OSS。域名切换后,源站已经没有新的数据产生了,此时再扫描一次,将还没有导过来的数据一次性导入到OSS,然后将镜像回写配置删除。
如果配置的源站是IP地址,那么将域名迁移到OSS后还可以继续镜像到源站,但是如果配置的是一个域名,由于域名本身会解析到OSS或者CDN,那么镜像就失去作用了,在这种情况下,可以另外申请一个域名作为镜像的源站,这个域名与正在服务的域名解析到同一个IP地址,这样服务域名迁移的时候就可以继续镜像到源站了。
只切换源站的部分流量到OSS或者CDN,源站本身还在不断的产生数据。
迁移方式与上述方式类似,只是流量切换到OSS后,不要将镜像回写配置删掉,这样可以保证切换到OSS或者CDN的流量还是能够取到源站的数据。
- 只有当GetObject()本应该返回404的情况下,OSS才会执行镜像回源,向源站请求文件。
- 向源站请求的URL为
MirrorURL+object
,回写到OSS的文件名为“object”,例如bucket为example-bucket
,配置了镜像回写,MirrorURL为http://www.example-domain.com/
,文件image/example_object.jpg
不在这个bucket里面,此时去下载这个文件时,OSS将向http://www.example-domain.com/image/example_object.jpg
发起GET请求,并将结果同时返回给用户以及写入到OSS,当下载完成后,这个文件就已经存在OSS上了,文件名为image/example_object.jpg
,此时相当于将源站的文件同名的迁移到了OSS上。如果MirrorURL带有path信息,比如http://www.example-domain.com/dir1/
,则与上例相同,OSS回源的URL为http://www.example-domain.com/dir1/image/example_object.jpg
,写入到OSS的object依然是image/example_object.jpg
,此时相当于将源站的某一个目录下的文件迁移到OSS上。 - 传给OSS的header信息不会传递给源站,querystring信息是否会传递给源站取决于控制台回源规则中的配置。
- 如果源站是chunked编码返回,那么OSS返回给用户的也是chunked编码。
- OSS会将源站的以下头信息返回并存为OSS的头信息:
Content-Type
Content-Encoding
Content-Disposition
Cache-Control
Expires
Content-Language
Access-Control-Allow-Origin - 通过镜像回写的文件会添加一个回应头x-oss-tag,值为MIRROR + 空格 + url_decode(回源URL),例如:
x-oss-tag:MIRROR http%3a%2f%2fwww.example-domain.com%2fdir1%2fimage%2fexample_object.jpg
。文件回写到OSS上后,只要文件不被重新覆盖,每次下载这个文件都会添加这个头部,用于表示这个文件来源于镜像。
- 假设文件已经通过镜像回写到了OSS,如果源站的相同文件发生了变化,那OSS不会更新已经存在于OSS上的文件,因为此时文件已经在OSS上,不符合镜像回写的条件。
- 如果镜像源也不存在此文件,即镜像源返回给OSS的http status为404,那么OSS也返回404给用户,如果是其他非200的状态码(包括因为网络原因等获取不到文件的错误情况),OSS将返回424给用户,错误码为“MirrorFailed”。
重定向
URL重定向功能的作用是根据用户设置的条件,以及相应的跳转的配置,向用户返回一个3xx跳转。用户可以利用这种跳转的功能对文件做重定向以及在此基础之上的各种业务。其流程如下:
使用场景
其他数据源向OSS的无缝迁移。
用户异步的从自己的数据源向OSS迁移数据,在此过程中未迁移到OSS的数据通过URL rewrite的方式返回给用户一个302重定向请求,用户的客户端根据302中的Location从自己的数据源读回数据。
配置页面跳转功能。
比如用户希望隐藏自己的某些前缀开头的object,给访问者返回一个特殊的页面。
配置发生404、或者500错误时的跳转页面。
发生以上错误的时候用户可以看到一个预先设定的页面,不至于系统发生错误的时候向用户完全暴露OSS的错误。
镜像回源主要用于无缝迁移数据到OSS,即服务已经在自己建立的源站或者在其他云产品上运行,需要迁移到OSS上,但是又不能停止服务,此时可利用镜像回写功能实现。的更多相关文章
- Spark优化之二:集群上运行jar程序,状态一直Accepted且不停止不报错
如果运行Spark集群时状态一直为Accepted且不停止不报错,比如像下面这样的情况: 15/06/14 11:33:33 INFO yarn.Client: Application report ...
- linux 下查看Tomcat的状态,以及开启停止服务命令
1.首先进入你的tomcat 的bin目录下 cd /你的安装目录/tomcat/bin 查看服务启动情况 ps -ef|grep java 此条命令具体含义 ps:将某个进程显示出来 -A 显示所有 ...
- 【阿里云产品公测】弹性伸缩服务ESS之试用初体验
弹性伸缩服务ESS之试用初体验 作者:云郎 2014/10/15 阿里云弹性伸缩服务(Elastic Scaling Service)是根据用户的业务需求和策略,自动调整其弹性计算服务器(ECS)的管 ...
- 利用 AWK 的数值计算功能提升工作效率(转载)
Awk 是一种优秀的文本样式扫描和处理工具.转文侧重介绍了 awk 在数值计算方面的运用,并通过几个实际工作中的例子,阐述了如何利用 awk 的计算功能来提高我们的工作效率.转文源自IBM Bluem ...
- 【Oracle】Oracle 10g利用闪回挽救误删的数据
我们在开发和运维过程中,经常遇到数据被误删除的情况.无论是在应用开发中的Bug,还是修改数据的时候,如果提交了错误数据修改结果,会带来很多问题.一般来说,一旦提交commit事务,我们是不能获取到之前 ...
- 利用闪回查看Oracle表历史时刻数据
利用闪回查看Oracle表历史时刻数据 1.查看表历史时刻数据 select * from tab_test AS OF TIMESTAMP to_timestamp('20140917 10:00: ...
- 【DG】利用闪回数据库(flashback)修复Failover后的DG环境
利用闪回数据库(flashback)修复Failover后的DG环境 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能, ...
- MySQL回滚到某一时刻数据的方法
MySQL回滚到某一时刻数据的方法 对于有归档日志的数据库来说,原理上都具备全库回滚到之前某一时刻的能力.在这方面最好用的Orale数据库,使用Oracle数据库的RMAN工具,可以方便的 ...
- Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点
Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...
随机推荐
- .NET Core微服务 权限系统+工作流(一)权限系统
一.前言 实际上权限系统老早之前我就在一直开发,大概在刚毕业没多久就想一个人写一个系统,断断续续一直坚持到现在,毕竟自己亲动手自写的系统才有收获,本篇仅介绍权限. 小小系统上不了台面,望各位大神勿喷. ...
- webpack常用配置项配置文件介绍
一.webpack基础 1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息.(也可以不生成package.json文件,但是package.json是很 ...
- 初探ggplot2 geom__制作面积图
大家大概都对如下信息图并不陌生,该图用100%堆积面积图的方式来表现不同时期不同国家人数所占的比例.这是一种很有意思的表达方式,而面积图也是很常用的数据图表,现在让我们一起来看看如何在R里用g ...
- 解决php中redis client进行subscribe操作出现timeout的问题
出现该问题的原因是poll设置接收超时所致,这个超时默认设置60s 设置Redis::OPT_READ_TIMEOUT配置项: 解决方法如下: <?php $redis = new Redis( ...
- VS2010中打开VS2012项目的方法
VS2012中对C#的支持度非常好,不管是编写方便程度(不需要插件就能高亮代码及代码自动提示功能),还对MFC的一些功能优化很多. 修改两个工程文件就把VS2012的项目移植到VS2010中去的方法如 ...
- Linux 线程浅析
进程和线程的区别与联系 在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体. 为了让进程完成一定的工作,进程必须至 ...
- DevExpress控件之LookupEdit,ComboBoxEdit
ComboBoxEdit 1. ComBoxEdit没有DisplayMember 和 ValueMember 属性,只能获取显示的值2.当前选定值comboBoxEdit1.Propertie ...
- 雕刻效果的实现【OpenCV+QT】
雕刻能够区分为凸雕和凹雕. 凸雕基右下角的点减去左上角的点. 凹雕是左上角的点减去右下角的点. [效果图] 由于进行了缩放.效果看起来差一些.
- 移动端去掉按钮button默认样式
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- Scanner遇上UnmappableCharacterException
上周末的时候.朋友约好去KTV,鉴于我这样的不怎么听歌的孩子伤不起啊,灵机一动就把我的酷狗歌单导出来了,XML文件嘛,内容太多,我仅仅想要歌名足已. 于是写了一个java去输出歌名. 岂料我受 ...