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