baetyl-remote-object
更新时间:2022-10-26
简介
baetyl-remote-object 模块用于将端侧文件上传到云端存储(Bos、Awss3)。其中,Awss3 指兼容 s3 接口的存储,可以支持标准 awss3、ceph、minio 等。baetyl-remote-obejct 从端侧 broker 订阅消息,然后解析消息内容,上传消息中的指定文件。
镜像地址
支持amd64/armv7/arm64架构。镜像地址:baetyltech/remote-object:v2.1.0
配置说明
baetyl-remote-object 的全量配置文件如下,并对配置字段做了相应解释:
clients: # 客户端配置
- name: # 客户端名称,[必须]指定,rules 中配置的 target 的 client 必须从这里配置的客户端列表中选取
kind: # 支持上传的对象存储服务类型,目前可支持 bos、awss3。枚举值分别为 BOS、S3
endpoint: # 服务地址
region: # 仅对 awss3 类型有效,表示区域,默认值:us-east-1。endpoint 的优先级高于 region
ak: # ak
sk: # sk
bucket: # bos、awss3 的 bucket
timeout: # 默认值:30s,client 连接 bos、awss3 服务的超时时间
backoff: # 上传策略,对 bos 生效
max: # 最大重试次数,默认为 0
delay: # 上传最长重试时间,默认为 20s
base: # 上传重试基数时间,默认为 0.3s,按照重试基数乘以 2 的指数级增长方式进行重试,直到达到最大重试次数或最长重试时间为止
multipart: # 大文件分块配置
partsize: # 块大小,默认 10m,即 10MB,超过 10MB 分块
concurrency: # 并发上传块数量,默认为 10
pool: # 协程池配置
worker: # 协程池最大协程数,默认为 1000
idletime: # 空闲清理时间, 默认为 30s
temppath: # 打包类型暂存地址
limit: # 按月限流策略
enable: # 是否开启限流,默认 false
data: # 最大上传流量/月,[必须]大于 0,单位支持 k,m,g,t,p
path: # 持久化统计文件路径
rules:
- name: rule1 # 规则名称,必须保持唯一
source: # 消息源
topic: broker/topic1 # 消息主题
qos: 1 # 消息质量
target: # 消息目的地
client: baidubos # object 目标节点
logger: # 日志配置
path: # 日志路径
level: # 日志级别
Demo实例
对接百度BOS对象存储示例
clients:
- name: baidubos
kind: BOS
endpoint: bj.bcebos.com
ak: XXXXXXXXXXXXXXXXXXXXXXXXXX
sk: XXXXXXXXXXXXXXXXXXXXXXXXXX
multipart:
partsize: 10m
concurrency: 10
pool:
worker: 1000
idletime: 30s
bucket: bos-remote-demo
temppath: var/lib/baetyl/tmp
limit:
enable: true
data: 9g
path: var/lib/baetyl/data/stats.yml
rules:
- name: rule1
source:
topic: broker/topic1
qos: 1
target:
client: baidubos
logger:
path: var/log/baetyl/service.log
level: "debug"
对接S3标准对象存储示例
clients:
- name: minio
kind: S3
endpoint: http://127.0.0.1:8080
ak: XXXXXXXXXXXXXXXXXXXXXXXX
sk: XXXXXXXXXXXXXXXXXXXXXXXX
multipart:
partsize: 10m
concurrency: 10
pool:
worker: 1000
idletime: 30s
bucket: bos-remote-demo
temppath: var/lib/baetyl/tmp
# max 1000g
limit:
enable: true
data: 9g
path: var/lib/baetyl/data/stats.yml
rules:
- name: rule3
source:
topic: broker/topic3
qos: 1
target:
client: minio
logger:
path: var/log/baetyl/service.log
level: "debug"
注意,baetyl-remote-object 会默认连接端侧的 broker,相关资料可以参考 broker。
消息传递模板
remote-object会订阅baetyl-broker当中的消息,对于消息格式要求如下:
{
"type":"UPLOAD",
"content":{
"localPath":"var/pic/2019-01-01.png", //必填,边缘容器内目录。可是文件/文件夹,文件夹可打包zip/tar
"remotePath":"dir/abc.zip", //必填,云端对选存储路径
"zip":true, // 选填,打包zip true打包为zip,false下,对于文件不作改动,对于文件夹打包为tar
"meta": { // 选填,文件meta值,kv键值对
"key1":"value1",
"key2":"value2"
}
}
}
消息示例
{
"type":"UPLOAD",
"content":{
"localPath":"var/lib/baetyl/image/jeep.jpg",
"remotePath":"var/lib/baetyl/image/jeep.jpg"
}
}