【技术方案分享】通过DGC调用OMS任务接口来完成日志同步

举报
HuaweiCloudDeveloper 发表于 2022/01/19 08:29:33 2022/01/19
【摘要】 通过DGC调用OMS迁移任务的接口,将日志文件从微软云的对象存储中迁移到华为云的对象存储OBS。

1. 云服务介绍

华为云OBS: 对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,使用时无需考虑容量限制,并且提供多种存储类型供选择,满足客户各类业务场景诉求。产品页面

华为云DGC: 数据湖治理中心(DGC)是数据全生命周期一站式开发运营平台,提供数据集成、数据开发、数据治理、数据服务、数据可视化等功能,支持行业知识库智能化建设,支持大数据存储、大数据计算分析引擎等数据底座,帮助企业客户快速构建数据运营能力。产品页面

华为云OMS: 对象存储迁移服务(Object Storage Migration Service)是一种线上数据迁移服务, 帮助用户把对象存储数据从其他云服务商的公有云轻松、平滑地迁移到华为云。产品页面

华为云RDS: 华为云关系型数据库服务具有完善的性能监控体系和多重安全防护措施,并提供了专业的数据库管理平台, 让用户能够在云中轻松的进行设置和扩展关系型数据库。通过华为云关系型数据库服务的管理控制台,用户几乎可以执行所有必需任务而无需编程,简化运营流程,减少日常运维工作量,从而专注于开发应用和业务发展。产品页面

2. 场景说明

需求点: 用户希望将微软对象存储中的CDN日志,通过OMS自动迁移至华为云OBS中,且可以实时迁移。

客户痛点: 当前华为云OMS不支持自动同步迁移带前缀的文件,并且用户微软侧日志传递有半天以上延迟。


3. 方案架构说明

3.1 解决方案

当微软对象存储中产生一个CDN日志文件时,用户可以通过微软的ADF事件处理获得产生的文件名称如api.xxxxxxx.com-CST-2021-12-19-1120-1129.csv.gz,将此文件名作为参数,实时传给华为云DGC并由DGC调用OMS来完成日志迁移。

  • 使用DGC作业定时运行,日志文件名做为参数调用OMS的创建任务API,解决OMS不支持自动同步迁移带前缀的文件的问题。

  • 将微软侧获取的文件名,插入到数据库时统一标记为未同步,在OMS迁移任务执行后,通过设OMS的API轮询OMS迁移状态,迁移任务完成才在数据库中更新日志同步的标记位,解决用户微软侧日志传递有半天以上延迟可能导致日志漏掉同步的问题。

3.2 架构简述

通过本地的java程序将微软云上的文件名参数插入到华为云的mysql中,然后通过DGC任务去轮询mysql,再调用OMS API去创建迁移,通过oms API轮询OMS迁移任务状态,迁移完成后再将数据库的迁移标志位更新。

主要步骤如下:

一、 从微软对象存储中获取日志文件名插入到数据库中。

二、 从数据库获取标记为未同步的日志文件名,赋值给文件名参数。

三、 DGC调用OMS的创建任务API,利用文件名参数将指定的日志文件从微软云迁移到华为云OBS;并从api响应体中提取oms-id作为参数以备后用。

四、 DGC调用OMS的查询指定任务状态API,利用上一步骤提取的oms-id查询迁移任务是否完成,任务完成则更新数据库中的日志同步的标志位为“已完成”。

3.3 方案架构图

利用DGC调用OMS的解决方案.png


4. 示例说明

4.1 前置条件说明

配置并使用华为云OMS、RDS、OBS、DGC服务

4.2 步骤示例

1) 从微软对象存储获取日志文件名称

在本地使用代码,定时将微软对象存储中的日志文件名提取出来,存入到华为云RDS数据库中,并在表中添加一列标记日志的同步状态,如默认记录为0(0为未同步,1为同步中,2为已完成)。

2) 创建主作业

  • DGC中创建作业,作业流程如下:
    image.png

流程详解:

  • 1.从数据库中提取日志文件名称作为文件名参数
    DGC中,使用RDS SQL节点从RDS中获取未同步的日志文件名,作为logpath参数。定时任务:每5分钟提取一次,一次提取一条。
    image.png
  • 2.使用For Each节点,将logpath的值提取出来,传递给子作业(子作业配置见后面步骤)。
    image.png

(添加此节点的作用:获取logpath的值。如果RDS SQL查询出来的logpath为空,会给下一节点传递查询值为空的一段描述,下一节点会得到该描述,并拼接起来,而不是得到空值)
image.png

3) 创建子作业

  • 添加子作业,子作业流程如下:
    image.png

流程详解:

  • 1.启动子作业之前,先添加一个IF判断条件,判断传入的参数logpath是否为空,如果为空,则终止本次作业。
    image.png

  • 2.将此日志文件名=logpath的记录,在数据库中的同步状态更新为1,代表接下来开始日志同步。
    image.png

  • 3.调用OMS创建任务接口,创建OMS迁移任务,并在【响应消息体解析为传递参数定义】将返回响应中的OMS-ID提取作为参数,传递给下一节点。
    image.png
  • 4.上个节点执行完毕后,调用OMS查询接口,任务的ID(OMS-ID)做为请求参数,查询任务的状态(接口返回status=5则同步完成,其他均认为同步中),若同步完成则进入下一节点,否则终止。

image.png

  • 5.同步完成,更新数据库中的同步状态为已完成,本次作业结束。
    image.png
  • 6.子作业参数配置
    image.png

4) 运行作业

  • 运行主作业,前往OMS控制台可查看迁移任务情况
    image.png

  • 迁移完成,数据库更新标记位
    image.png

  • OBS中出现同步完成的日志文件
    image.png

5. 问题解决渠道说明

5.1 华为云开发者技术支持界面

5.2 华为云开发者技术支持社区界面

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。