配置文件
server.properties
server.properties
文件用于配置端口、流量限制以及RPC服务线程数,在没有特殊要求的情况下,一般只需要修改监听端口号即可,默认监听8090端口。
# server进程监听的端口号
serverPort=8090
# 每个client请求对应的处理线程数目
fileWorkerNum=50
client.properties
client.properties文件
(必须是UTF8编码的):该文件是迁移任务的核心配置文件,在项目的client/resources
目录下,通过修改该文件对client和server进行调节。
文件主要包含迁移任务的列表信息和并发度等,配置文件中有些配置被修改后会自动重新加载,如serverThreadNum
(单次迁移请求期望server使用的并发线程数量);有些是不能重新加载的,如taskList
(迁移任务列表),具体配置可以参考文件内的注释说明。
以下为不同类型迁移任务的配置文件示例,可以参考下表中示例修改client.properties文件
配置示例
迁移类型 | 示例文件 | 说明 |
---|---|---|
从http迁移到BOS | properties_examples/client.properties.http | 给定url(每个URL代表一个可以直接使用GET请求下载的文件)列表, 迁移到BOS |
从OSS迁移到BOS | properties_examples/client.properties.oss | 给定OSS的Object列表, 配置源端和目的端ak/sk等信息 |
从COS迁移到BOS | properties_examples/client.properties.cos | 给定COS的Object列表, 配置源端和目的端ak/sk等信息;srcEndpoint参数需要填cos region |
从七牛迁移到BOS | properties_examples/client.properties.qiniu | 给定七牛的Object列表, 配置源端和目的端ak/sk等信息 |
从AWS S3迁移到BOS | properties_examples/client.properties.s3 | 给定AWS S3的Object列表, 配置源端和目的端ak/sk等信息 |
从FDS迁移到BOS | properties_examples/client.properties.fds | 给定源小米生态云的Object列表, 配置源端和目的端ak/sk 等信息 |
从KS3迁移到BOS | properties_examples/client.properties.ks3 | 给定源金山云ks3的Object列表, 配置源端和目的端ak/sk等信息 |
从BOS迁移到BOS | properties_examples/client.properties.bos | 给定源BOS的Object列表, 配置源端和目的端ak/sk等信息 |
从BOS到BOS的check校验 | properties_examples/client.properties.bos-check | 给定源BOS的Object列表和相关信息, 校验目的端是否和源端匹配 |
参数说明
serverThreadNumber
:此配置项设置单个请求发送到server后,server使用多少个线程来处理该请求,在源端和目的端以及server资源条件允许的情况下,一般以打满server带宽为标准来设置该数值,需要调整几次。server占用内存 = serverThreadNumber ∗ blockSize ∗ maxConnectionsPerServer-
serverList
:迁移server列表,每个server由ip和端口号组成,server之间使用;
进行分隔,示例如下:# serverList这个选项可以置空,置空没有可用的迁移server,迁移会暂停 serverList=192.168.1.1 8090;192.168.1.2 8090
filesPerRequest
:每次请求分发到迁移server的文件数量。建议该值配置完后每次迁移请求的完成时间大于30秒。因为一次请求使用一个tcp连接,需要保证在下个请求开始时上一次tcp连接可以正常断开,避免tcp fd过多,可以在开始迁移时尝试由小到大增大这个值,直到每次迁移请求完成时间大于30秒为止。-
taskList
:该参数需要填写任务列表文件的绝对路径。任务列表文件中包含了一个或多个任务,这些任务是预先处理好的,每个任务对应一个object_list文件的绝对路径,每个object_list文件中的每一行对应一个最小粒度的数据迁移。配置示例如下:# 如下表示任务列表文件绝对路径为/home/work/list/task_list taskList=/home/work/list/task_list
任务列表文件内容示例:
/home/work/list/object_list1 /home/work/list/object_list2 # /home/work/list/object_list3
- 以上内容表示taskList包括3个object_list,对应着3个object_list文件,每个object_list文件中又包含多行,每一行是一个最小粒度的数据迁移。
- 当以
#
开头时表示该行被注释掉, 不会被当做迁移任务处理。
-
listDelimiter
和listFormat
listDelimiter
表示object_list文件中每行数据的每一列之间的分隔符,listFormat
表示object_list文件中每一行应该包括哪几列,列名以;
分割,字段值大小写敏感。配置示例如下:listDelimiter=" " listFormat=bucketName;objectName;dstObjectName
object_list文件内容示例:
bucketA prefixA/aaa/object1 prefixB/bbb/object1 bucketA prefixA/aaa/object2 prefixB/bbb/object2 # bucketA prefixA/aaa/object3 prefixB/bbb/object3 bucketA prefixA/aaa/object4 prefixB/bbb/object4
- 以上内容和
listDelimiter
和listFormat
参数一一对应,每一行包括3列,分别是bucketName、objectName和dstObjectName,每一列之间用空格分隔。 - 当以
#
开头时表示该行被注释掉, 不会被当做迁移任务处理。
目前文件列表格式中支持的的各个fields包括:
field 意义 示例 srcAk 源端ak srcSk 源端sk dstAk 目的端(bos)ak dstSk 目的端(bos)sk srcBucketName 源端bucket名称 bucketName 源端bucket名称 objectName 源端object名 dstBucketName 目的端bucket名称 dstObjectName 迁移之后的名称, 可以通过这一项来实现改名 contentType 如果源端没有, 迁移之后存放到bos的contentType text/plain contentDisposition 如果源端没有, 迁移之后存放到bos的contentDisposition attachment; filename="abc.mp4" toBosIa 是否迁移到bos ia toBosIa - 以上内容和
srcBucketName/bucketName是或的关系,两者取其一,优先取srcBucketName
-
migrationStrategy
:迁移策略FORCE_OVERWRITE
: 强制覆盖目的端文件,可能会破坏目的端文件,危险,慎用,在确定需求的前提下使用KEEP_DESTITNATION
: 如果目的端有同名文件文件存在则跳过KEEP_NEWER
: 如果目的端有同名文件存在,且新于源端文件,则跳过,否则覆盖之;如果目的端没有"同名"文件(有可能迁移时文件需要改名)存在,则按照迁移规则直接复制到目的端
KEEP_DESTITNATION
和KEEP_NEWER
这两个迁移策略比较适合用于业务平稳切换时,在源端和目的端进行双写时使用,两者的效率相当,根据具体需求确定使用。- 迁移策略设置成三种策略之外的未知策略,会默认设置成KEEP_DESTINATION。
-
headQps
、putQps
和bandwidth
:QPS和带宽限速- headQps表示从数据源迁移到BOS或者与BOS数据check对比时getObjectMeta请求的QPS上限,最大不超过5000次/秒;
- putQps表示从数据源迁移到BOS时putObject请求的QPS上限,最大不超过1500次/秒;
-
bandwidth表示从数据源迁移到BOS时putObject请求的带宽上限,最大不超过3000MBps。
headQps=5000 putQps=1500 bandwidth=3000