您可以为 TOS 配置事件触发规则,然后由 CloudFS 消费事件并根据事件通知自动刷新元数据,以此保证在 CloudFS 中可见的数据与存储在 TOS Bucket 中的数据一致性。
TOS事件消费链路
在机器学习生态环境中,您需要在 CloudFS 侧创建一个数据湖模式的文件存储系统,将 TOS Bucket 的某个 Prefix 挂载到 CloudFS Namespace 下,并开启基于 TOS 事件通知的元数据缓存刷新功能。
一个 CloudFS Namespace 只能关联一个 TOS Bucket,但一个 TOS Bucket 也可能会挂载到多个 Namespace。 在函数服务(veFaaS)侧,上传由 CloudFS 提供的函数代码文件并发布函数,通过代码逻辑实现函数与 Kafka 的打通。当函数接收到 TOS 事件后,将触发函数代码执行并将事件推送到目标 Kafka Topic。
我们知道一个 Topic 中的消息会广播至所有 Consumer Group,而 Consumer Group 与 CloudFS Namespace 一一对应。这样就实现了当一个 TOS Bucket 挂载到多个 CloudFS Namespace 时,多个 Namespace 都能收到事件通知。 在 TOS 侧,支持按照 Bucket、Prefix 和 Suffix 配置事件触发规则,一个规则只能关联一个函数。
当事件触发后,事件通知到关联函数;事件通知将触发函数代码逻辑,从而推送到目标 Kafka Topic。
注意事项 您在使用 CloudFS 消费 TOS Bucket 事件时,请关注以下几点注意事项:
开通函数服务(veFaaS)
TOS 事件产生的源是您所创建的桶,而最终的消费者是 CloudFS ,TOS 事件无法直接通知到 CloudFS,而是先通知到函数服务,因此您需要提前开通函数服务。
开通函数服务并使用计算资源,会产生部分费用。如需了解函数服务的计费详情,请参见函数服务产品计费 。CloudFS 独占 TOS 事件触发规则
一个 TOS 存储桶最多支持创建 10 个事件通知规则,且要求在同一个存储桶内,不同事件规则间事件类型+前后缀 的组合不允许重叠,即一个资源对象不能同时匹配多个事件规则。
因此,您在使用 CloudFS 消费 TOS 事件时,要求有且仅创建一个针对 Bucket 根路径、全部事件类型的事件通知规则。此时, TOS 事件通知规则就全由 CloudFS 独占,任何资源事件都将推送到 CloudFS。
步骤一:创建文件存储系统 登录大数据文件存储控制台 。
在左上角切换目标地域。
在大数据文件存储 页面,单击创建文件存储 ,根据实际情况创建一个数据湖模式的文件存储系统。
配置
说明
计费类型
目前仅支持按量计费 类型,表示每小时统计前一小时的实际用量并进行结算,从账户余额中扣除实际消费金额。
例如,当前时间是 9:30,结算的是 8:00~9:00 产生的费用。
目前大数据文件存储服务处于公测期间,免费试用。如需了解产品计费的详细信息,请参见产品计费 。
文件存储名称
自定义文件存储系统的名称。
支持英文字母、数字和短横线(-)组合,且长度为 2~36 个字符。
区域
建议您选择业务所在区域,或距离业务更近的区域,以降低网络延时,提高访问速度。
不同区域间内网隔离。
可用区
选择文件存储所处的可用区。
应用场景
此处选择数据湖场景 ,以创建一个支持原生 TOS 和部分 HDFS 语义的,用于数据湖分析场景和机器学习场景的文件存储系统。
对象存储来源
支持选择当前账号下的存储桶,也支持选择其他账号下的存储桶,请根据实际情况选择。
TOS 对象存储
选择存储数据的存储桶(Bucket)。
当前账号:可从下拉列表中选择已有的存储桶。如果没有可用的存储桶,可以单击创建桶 ,然后创建存储桶。详细操作,请参见创建存储桶 。 其他账号:手动输入存储桶的名称。 文件存储前缀(当前账号)
文件夹路径(其他账号)
支持将 TOS 的子路径挂载到文件存储系统。
非必填项,可为空,为空时表示挂载全部路径;填写时不得以左斜线(/)开头,需要以左斜线(/)结尾,如prefix/
。
示例: TOS 路径为tos://tos-doctest/prefix
,配置的文件存储前缀可以为prefix/
。此时访问 CloudFS 的根目录(/)就等同于访问 TOS 的 prefix/
;访问 CFS 的/test
,就等于 TOS 的prefix/test
。
TOS 所属账号ID(其他账号)
从其他账号下选择 TOS 时,请输入该账号的账号 ID。
访问秘钥(其他账号)
选择从其他账号下的 TOS 时,需要填写与该账号匹配的 Access Key ID 和 Secret Access Key。只有设置与账号 ID 匹配的访问秘钥后,才可以通过鉴权认证,添加 TOS。
如何获取账号的访问秘钥,请参见密钥管理 。
缓存加速
数据湖模式的文件存储系统默认必须开启缓存加速功能,用以提高文件存储速度。
计费规格:支持标准版和专业版计费规格,但目前 CloudFS 处于公测期间,免费试用。
类型:选择加速基线,提供 200MB/s/TiB 和 400MB/s/TiB 两种类型的加速基线。
假设选择购买 200MB/s/TiB 的基线,表示每 TiB 容量可用带宽为 200MB/s。
容量:请按照实际业务场景输入预期的文件存储系统容量,起步 10 TiB,步长 5TiB。
文件存储系统创建后,支持您扩容文件存储的缓存容量,请参见扩容文件存储系统 。
私有网络:从下拉列表中选择已有 VPC。如果没有可用 VPC,可以单击创建私有网络,然后创建私有网络。详细操作,请参见创建 VPC 。
子网:在下拉列表中选择子网。如果没有可用的子网,可以单击创建子网 ,然后创建子网。详细操作,请参见创建子网 。
安全组:从下拉列表中选择安全组。如果没有可用的安全组,可以单击创建安全组 ,然后创建安全组。详细操作,请参见创建安全组 。
在确认订单 页面,确认文件存储系统配置信息,确认无误后单击立即购买 。
步骤二:创建与发布函数 登录函数服务控制台 。
在左上角切换目标地域。
根据以下需求,创建函数。相关文档,请参见创建函数 。
配置
要求
函数模板
语言:Golang
模板:vefaas-golang-tos-trigger
高级配置
内存规格:512MB
执行超时:30s
单实例并发数:100
VPC调用:停用
日志功能:启用
在函数详情页的代码 页签下,单击上传 ,上传由 CloudFS 提供的函数代码文件以覆盖当前函数中的默认代码。
说明
函数代码文件由 CloudFS 侧负责提供,一般以.zip
格式交付。代码中将详细记录 Kafka 实例和 Topic 信息,保证事件通知触发代码逻辑时,消息通知能准确推送到 Kafka Topic。
发布函数,要求实例数上限为 10。相关文档,请参见发布函数 。
说明
结合函数配置和实例上限数(10),关联该函数的 TOS 事件触发性能可以达到 8K event/s,时延约为 20ms。
(可选)创建 TOS 触发器。
函数服务支持直接创建 TOS 触发器,以监听指定 Bucket 下的资源变动,并将事件通知传递给当前函数,触发函数代码逻辑。但您也可以选择在 TOS 侧为指定 Bucket 创建事件触发规则,然后关联函数。
当您选择直接为函数创建 TOS 触发器,请参见创建 TOS 触发器 。
步骤三:配置TOS事件通知 当您选择在 TOS 侧为指定 Bucket 创建事件触发规则,请查看以下步骤。
登录对象存储控制台 。
在左上角切换目标地域。
进入目标 Bucket,然后在左侧导航栏选择基础设置 > 事件通知 ,再单击创建规则 。
根据以下要求,创建事件触发规则。
如您需要了解事件触发规则的更多内容,请参见设置事件通知 和事件类型 。
配置
要求
前缀+后缀
均设置为空。此时表示 Bucket 内任何资源对象变动,都将触发事件通知。
前缀:需要匹配的前缀信息。 后缀:需要匹配的后缀信息。 事件类型
勾选全部事件类型。此时表示发生任何事件都会触发事件通知。
函数服务
选择您已创建并发布的函数。
步骤四:模拟事件触发 根据设置的事件触发规则,您可以通过上传、删除、拉取资源对象等方式触发事件。此处选择直接在 TOS Bucket 中上传对象触发事件。
登录对象存储控制台 。 在左上角切换目标地域。 进入目标 Bucket,在 Bucket 或 Prefix 页面单击上传文件 ,然后选择文件并上传。
结果验证 当您往 TOS Bucket 上传资源对象后,将会触发事件通知,您可以在函数服务和 CloudFS 服务端接收到事件通知消息。
函数监控
进入函数详情页的监控 页签,您可以查看因 TOS 事件触发函数代码执行后,各指标的变化。说明
由于只在 TOS Bucket 上传了一次资源对象,产生的监控指标变化不是很明显,您可以选择多次上传同一个资源对象以观察到平滑的指标变化趋势图。
CloudFS 侧查看事件通知消息
CloudFS 侧接收到的 TOS 事件通知只能在服务端查看,如您需要确认是否在 CloudFS 侧准确接收到事件通知,请咨询 CloudFS 侧技术支持人员。