对象存储BOS

    配置文件

    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
      1. 以上内容表示taskList包括3个object_list,对应着3个object_list文件,每个object_list文件中又包含多行,每一行是一个最小粒度的数据迁移。
      2. 当以#开头时表示该行被注释掉, 不会被当做迁移任务处理。
    • listDelimiterlistFormat

      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
      1. 以上内容和listDelimiterlistFormat参数一一对应,每一行包括3列,分别是bucketName、objectName和dstObjectName,每一列之间用空格分隔。
      2. 当以#开头时表示该行被注释掉, 不会被当做迁移任务处理。

      目前文件列表格式中支持的的各个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:迁移策略

      1. FORCE_OVERWRITE: 强制覆盖目的端文件,可能会破坏目的端文件,危险,慎用,在确定需求的前提下使用
      2. KEEP_DESTITNATION: 如果目的端有同名文件文件存在则跳过
      3. KEEP_NEWER: 如果目的端有同名文件存在,且新于源端文件,则跳过,否则覆盖之;如果目的端没有"同名"文件(有可能迁移时文件需要改名)存在,则按照迁移规则直接复制到目的端
      • KEEP_DESTITNATIONKEEP_NEWER 这两个迁移策略比较适合用于业务平稳切换时,在源端和目的端进行双写时使用,两者的效率相当,根据具体需求确定使用。
      • 迁移策略设置成三种策略之外的未知策略,会默认设置成KEEP_DESTINATION。
    • headQpsputQpsbandwidth:QPS和带宽限速

      1. headQps表示从数据源迁移到BOS或者与BOS数据check对比时getObjectMeta请求的QPS上限,最大不超过5000次/秒;
      2. putQps表示从数据源迁移到BOS时putObject请求的QPS上限,最大不超过1500次/秒;
      3. bandwidth表示从数据源迁移到BOS时putObject请求的带宽上限,最大不超过3000MBps。

        headQps=5000
        putQps=1500
        bandwidth=3000
    上一篇
    部署方式
    下一篇
    日志