RocketMQ在数据异构系统的应用

本文涉及的产品
云原生网关 MSE Higress,422元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 老胡身在南方“鹏城(深圳)”,除写代码啥都不会,全栈技术专家,RocketMQ 多语言client贡献者。技术方面专注中间件,分布式,存储,AI软件领域的解决方案。

老胡身在南方“鹏城(深圳)”,除写代码啥都不会,全栈技术专家,RocketMQ 多语言client贡献者。技术方面专注中间件,分布式,存储,AI软件领域的解决方案。


场景


数据的时代已经到来,数据的价值越来越重要,面对无处不在的数据,为了把数据利用起来,于是出现了数据中台。


数据中台大致有六大功能:


  1. 数据收集
  2. ETL
  3. 数据计算
  4. 存储
  5. 数据分析
  6. 数据展示


本文讲解RocketMQ在数据中台的数据收集,ETL,数据计算中发挥核心作用


选择


业界已经存在了许多数据同步的解决方案,这些同步解决方案存以两方面为主


  1. 点对点同步
  2. 离线同步


而业界大部分同步方案的架构与下图类似:


1.png


作为一个工业级的组件不会做选择题。点对点同步要,多对多同步也要。离线同步不可以少,同时实时同步也是必须的。异构与同步数据组件,组件架构如下:


2.png


基于消息中间件的异构同步组件与一下优势


多种类型的source


从上图可以观察到,source的类型是很多种的。


gather/sdk:主要是外部数据,比如客户的数据,APP采集数据的来源

RPC: 主要是内部业务系统产生的有价值的数据

agent:收集日志,系统与硬件运行信息

数据源:从各种存储读取数据


削峰填谷


3.png


source的读取速度与slink的写入数据都是无法控制的。在普遍情况下source的效率往往是sink的好几倍,可能致使gather服务不可用,造成严重的事故。什么时候出现峰没有人知道,这样不可预知的事情对于整个系统的稳定性与高可用性会造成极大的威胁。于是引入消息中间件作为缓冲区


多数据源异构


4.png


客户存在上线与下线两套商品体系,规划两套体系的推荐行为可以共享。需要同时采集客户两套体系的商品数据,同步五个存储。基于消息中间件的异构解决方案,才能非常优雅的处理问题。


更优的资源调配


5.png


第一个流程表示的一个source多个sink的架构,第二个流程多个source一个sink的架构。在异构架构设计下source与sink的个数与是否运行都是可以灵活搭配的。这样大大的节约了服务器资源。


深入


在众多消息中间件为什么选择RocketMQ,因为RocketMQ的许多特性帮我们解决许多问题。具体问题如下:


6.png


数据安全


在数据同步的组件里面有一个基本原则就是数据不能丢失。对于saas平台这种场景,有非常多的不确定因素与许多不可预知的情况下,数据恢复是一件非常麻烦的事情,如果在实时场景中同步数据与客户内部数据出现差异,可能出现非常致命的事情。对比其他消息中间件,所以数据安全是一件最重要的事情。RocketMQ以下特性在保证数据不丢失


  1. RocketMQ的整体架构师设计保证了数据安全。主从同步复制,broker同步落盘

  2. 当消费失败之后的消息重试

  3. 死信队列:

     1)不需要另外维护消息失败后的存储点的

     1)异常操作造成队列不存在等异常,可以发送到私信队列


并行消费与同步消费


数据同步分为添加,修改,删除三种行为。表(结果集)可以分类为:追加表与修改表

追加表只有添加行为,适合并行消费


修改表有添加,修改,删除三种行为。在大数据高并发多线程的情况数据中台很容易没有按照业务的数据行为执行,造成数据中台的数据与业务数据不一致性。为了保证执行循序与业务操作循序一致,与选择了RocketMQ的同步消费的特性,用于保证操作执行循序不变


7.png


上图演示了并行消费情况下数据不一致的情况。在理想情况下 source的循序是1234,那么sink的执行循序是6785。但是实际执行的循序是5678。于是使用RocketMQ的循序消息特性保证了数据的一致性


8.png


顺序消息实际是只让一个消费者消息消息,其他消费者会一直去抢消费权


分类并行


同步消费的效率对比并行消费实在低太多了,而且sink的写入速度远远低于source读取数据,经常造成了大量的数据累积,导致同步数据与业务数据一致性较差,有时低都业务都无法忍受。


在第一次同步时是全量同步,不存在修改操作。所以使用并行同步。之后改为同步消费。为了提高同步消费的性能。经过深入的分析与研究,发现如果对数据进行分类就可以提高效率,于是基于RocketMQ的queue与tag实现了分类并行。


9.png


观察与运维能力


目前有大量的同步topic,这些topic创建,删除,测试,定位,观察,查找 是一个难题,项目参与的每个开发,测试,产品等都要去观察与运维topic。RocketMQ-console能简单的帮我们解决这些问题,很大程度上提高了整体开发效率与进度


基于消息轨迹,初步实现数据跟踪


10.png


上面是推荐业务场景下,数据在系统内部的流转说明图。这样一个流转,在内部称为“任务”,每个节点是“算子”。某条数据可能因为某个不可抗拒的因素没有产生“任务”的预期结果。在复杂的任务与系统,高并发,高性能的情况下,需要对数据的流转进行监控,及时发现流转的异常,快速的修正数据与问题。于是需要一个能力:数据跟踪


通过观察发现目前所有的算子大部分都从RocketMQ读取数据,于是将计就计基于RocketMQ的消息轨迹,设计完成了第一代数据跟踪能力


RocketMQ-connect


RocketMQ-connect是基于RocketMQ实现的数据异构开源组件,已经支持多种数据源之间的同步。现在越来越多的企业与公司使用RocketMQ支撑起业务平台与数据平台,在各平台的数据是一种流状态。使用RocketMQ-connect在原有的架构下可以简单,快速的构建起一套流数据平台。


RocketMQ-connect架构有两个明显的特征:


  1. 去中心化设计与无依赖架构设计

  2. 基于SPI的可插排的设计


去中心化设计


11.png


connect-cli把异构任务发送到任何一个connect-runtime,runtime把任务信息做了简单处理发送broker。集群内所有connect-runtime都会接受到任务,然后存储到本地,runtime启动运行任务不用直接依赖broker。

在整体的RocketMQ-connect在整体架构设计上没有使用任何的其他组件,保证了整体的简洁与优雅


基于SPI的可插排的设计

json
{
  "connector-class":"org.apache.rocketmq.connect.file.FileSourceConnector",
  "topic":"fileTopic",
  "filename":"/opt/source-file/source-file.txt",
  "source-record-converter":"org.apache.rocketmq.connect.runtime.converter.JsonConverter"
}


connector-class:  source的执行对象

source-record-converter: 数据处理对象

topic:file-source的配置

filename: file-source的配置


从任务信息中可以看出,启动一个任务需要提供任务所需的source或则sink执行类。RocketMQ-connect会在插件目录下找寻启动类。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
消息中间件 Java 数据库
RocketMQ实战—9.营销系统代码初版
本文主要介绍了实现营销系统四大促销场景的代码初版:全量用户推送促销活动、全量用户发放优惠券、特定用户推送领取优惠券消息、热门商品定时推送。
RocketMQ实战—9.营销系统代码初版
|
6月前
|
消息中间件 搜索推荐 调度
RocketMQ实战—8.营销系统业务和方案介绍
本文详细介绍了电商营销系统的业务流程、技术架构及挑战解决方案。涵盖核心交易与支付后履约流程,优惠券和促销活动的发券、领券、用券、销券机制,以及会员与推送的数据库设计。技术架构基于Nacos服务注册中心、Dubbo RPC框架、RocketMQ消息中间件和XXLJob分布式调度工具,实现系统间高效通信与任务管理。针对千万级用户量下的推送和发券场景,提出异步化、分片处理与惰性发券等优化方案,解决高并发压力。同时,通过RocketMQ实现系统解耦,提升扩展性,并利用XXLJob完成爆款商品推荐的分布式调度推送。整体设计确保系统在大规模用户场景下的性能与稳定性。
RocketMQ实战—8.营销系统业务和方案介绍
|
4月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
2360 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
6月前
|
消息中间件 NoSQL Java
RocketMQ实战—10.营销系统代码优化
本文主要介绍了如何对营销系统的四大促销场景的代码进行优化,包括:全量用户推送促销活动、全量用户发放优惠券、特定用户推送领取优惠券消息、热门商品定时推送。
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
933 2
|
7月前
|
消息中间件 人工智能 自然语言处理
基于 RocketMQ 事件驱动架构的 AI 应用实践
基于 RocketMQ 事件驱动架构的 AI 应用实践
199 2
|
7月前
|
消息中间件 存储 前端开发
MQ有什么应用场景
MQ有什么应用场景
|
10月前
|
消息中间件 存储 监控
说说MQ在你项目中的应用(一)
本文总结了消息队列(MQ)在项目中的应用,主要围绕异步处理、系统解耦和流量削峰三大功能展开。通过分析短信通知和业务日志两个典型场景,介绍了MQ的实现方式及其优势。短信通知中,MQ用于异步发送短信并处理状态更新;业务日志中,Kafka作为高吞吐量的消息系统,负责收集和传输系统及用户行为日志,确保数据的可靠性和高效处理。MQ不仅提高了系统的灵活性和响应速度,还提供了重试机制和状态追踪等功能,保障了业务的稳定运行。
289 7
|
11月前
|
消息中间件 存储 Apache
探索 RocketMQ:企业级消息中间件的选择与应用
RocketMQ 是一个高性能、高可靠、可扩展的分布式消息中间件,它是由阿里巴巴开发并贡献给 Apache 软件基金会的一个开源项目。RocketMQ 主要用于处理大规模、高吞吐量、低延迟的消息传递,它是一个轻量级的、功能强大的消息队列系统,广泛应用于金融、电商、日志系统、数据分析等领域。
1003 0
探索 RocketMQ:企业级消息中间件的选择与应用
|
11月前
|
消息中间件 测试技术
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
轻量消息队列(原MNS)以其简单队列模型、轻量化协议及按量后付费模式,成为阿里云产品间消息传输首选。本文通过创建主题、订阅、配置告警集成等步骤,展示了该产品在实际应用中的部分功能,确保消息的可靠传输。
221 2

相关产品

  • 云消息队列 MQ