告别Kafka Stream,让轻量级流处理更加简单
一说到数据孤岛,所有技术人都不陌生。在 IT 发展过程中,企业不可避免地搭建了各种业务系统,这些系统独立运行且所产生的数据彼此独立封闭,使得企业难以实现数据共享和融合,并形成了"数据孤岛"。
由于数据散落在不同数据库、消息队列中,计算平台直接访问这些数据时可能遇到可用性、传输延迟,甚至系统吞吐问题。如果上升到业务层面,我们会发现这些场景随时都会遇到:汇总业务交易数据、旧系统数据迁移到新系统中、不同系统数据整合。因此,为了能让数据更加实时、高效的融合并支持各业务场景,企业通常选择使用各种 ETL 工具以达到上述目的。
因此,我们可以看到企业自行探索的各种解决方案,比如使用自定义脚本,或使用服务总线(Enterprise Service Bus,ESB)和消息队列(Message Queue,MQ),比如使用企业应用集成(Enterprise application integration,EAI)通过底层结构的设计来横贯企业异构系统、应用、数据源等,实现数据的无缝共享与交换。
尽管以上手段都算实现了有效实时处理,但也给企业带来更难决断的选择题:实时,但不可扩展,或可扩展。但批处理。与此同时,随着数据技术、业务需求的不断发展,企业对 ETL 的要求也不断提升:
- 除了支持事务性数据,也需要能够处理诸如 Log、Metric 等类型越来越丰富的数据源;
- 批处理速度需要进一步提升;
- 底层技术架构需要支持实时处理,并向以事件为中心演进。
可以看到,流处理/实时处理平台作为事件驱动交互的基石。它向企业提供了全局化的数据/事件链接、即时数据访问、单一系统统管全域数据以及持续索引/查询能力。也正是面对以上技术与业务需求,Kafka 提供了一个全新思路:
- 作为实时、可扩展消息总线,不再需要企业应用集成;
- 为所有消息处理目的地提供流数据管道;
- 作为有状态流处理微服务的基础构建块。
我们以购物网站数据分析场景为例,为了实现精细化运营,运营团队以及产品经理需要将众多用户行为、业务数据以及其他数据数据进行汇总,这其中包括但不限于:
- 用户各类点击、浏览、加购、登陆等行为数据;
- 基础日志数据;
- APP 主动上传数据;
- 来自 db 中的数据;
- 其他。
这些数据汇集到 Kafka,然后数据分析工具统一从 Kafka 中获取所需的数据进行分析计算。由于 Kafka 采集的数据源非常多且格式也各种各样。在数据进入下游数据分析工具之前,需要进行数据清洗,例如过滤、格式化。在这里研发团队有两个选择:(1)写代码去消费 Kafka 中的消息,清洗完成后发送到目标 Kafka Topic。(2)使用组件进行数据清洗转换,例如:Logstash、Kafka Stream、Kafka Connector、Flink等。
看在这里,大家肯定会有疑问:Kafka Stream 作为流式处理类库,直接提供具体的类给开发者调用,整个应用的运行方式主要由开发者控制,方便使用和调试。这有什么问题吗?虽然以上方法确实能够很快解决问题,但其问题也显而易见。
- 研发团队需要自行编写代码,且需要后期持续维护,运维成本较大;
- 对于很多轻量或简单计算需求,引入一个全新组件的技术成本过高,需要进行技术选型;
- 在某组件选定后,需要研发团队进行学习并持续维护,这就带来了不可预期的学习成本、维护成本。

为了解决问题,我们提供了一个更加轻量的解决方案:Kafka ETL 功能。
使用 Kafka ETL 功能后,只需通过 Kafka 控制台进行简单配置,在线写一段清洗代码,即可实现 ETL 的目的。可能存在的高可用、维护等问题,完全交由 Kafka。
那么接下来,我们为大家展示如何快速的创建数据 ETL 任务,仅需 3 步即可。
Step 1 : 创建任务
选择 Kafka 来源实例、来源 Topic,以及对应的选择 Kafka 目标实例、目标 Topic。并配置消息初始位置、失败处理以及创建资源方式。


Step 2:编写ETL主逻辑
我们可以选择 Python3 作为函数语言。
与此同时,这里提供了多种数据清洗、数据转化模板,比如规则过滤、字符串替换、添加前/后缀等常用函数。

Step 3:设置任务运行、异常参数配置,并执行

可以看到,无需额外的组件接入或者复杂的配置,更轻量、更低成本的 Kafka ETL 仅需 3-5 步的可视化配置,即可开始 ETL 任务。对于数据 ETL 要求相对简单的团队而言,Kafka ETL 成为最佳选择,可以将更多精力放在业务研发上。
如此轻松便捷的 ETL 功能,真的不容错过!告别繁琐的脚本,告别组件选型与接入,立即扫码或点击链接(https://www.aliyun.com/product/kafka?utm_content=se_1009650951),体验更加轻松的 ETL 吧!

告别Kafka Stream,让轻量级流处理更加简单的更多相关文章
- 《Kafka Stream》调研:一种轻量级流计算模式
原文链接:https://yq.aliyun.com/articles/58382 摘要: 流计算,已经有Storm.Spark,Samza,包括最近新起的Flink,Kafka为什么再自己做一套流计 ...
- 流式处理的新贵 Kafka Stream - Kafka设计解析(七)
原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/kafka/kafka_stream/ Kafka Stream背景 Ka ...
- 流式计算新贵Kafka Stream设计详解--转
原文地址:https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162822&idx=1&sn=8c4611436 ...
- Kafka设计解析(七)- Kafka Stream
本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka Stream.接着介绍了Kafka Stream的整体架构,并行模型,状态存储,以 ...
- Kafka设计解析(七)Kafka Stream
转载自 技术世界,原文链接 Kafka设计解析(七)- Kafka Stream 本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka ...
- [翻译]Kafka Streams简介: 让流处理变得更简单
Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...
- Kafka Streams简介: 让流处理变得更简单
Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...
- Kafka Stream
Kafka Stream是Apache Kafka从0.10版本引入的一个新Feature(当前:1.0.0-rc0,参见:https://github.com/apache/kafka/releas ...
- jdk8系列三、jdk8之stream原理及流创建、排序、转换等处理
一.为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX ...
随机推荐
- Java-ThreadPool线程池总结
ThreadPool 线程池的优势 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出的线程排队等候,等待其他线程执行完毕 ...
- STM32—驱动GY85-IMU模块
GY85是一个惯性测量模块,内部集成了三轴加速度计.三轴陀螺仪.电子罗盘.气压传感器等芯片,用于测量和报告设备速度.方向.重力,模块可以将加速度计.陀螺仪.电子罗盘等传感器的数据进行综合,在上位机可以 ...
- LuoguP3167通配符匹配
题意 本题的意思就是给出一段带有 $ ? $ 与 \(*\) 的字符串 (在下面称为\(s\)), $ ? $ 必须占据一个字符位置, \(*\) 可以占据任意位置, 求下面给出几段(在下面称为\(s ...
- SSM自学笔记(七)
14.MyBatis的多表操作 1.MyBatis的多表操作 1.1 一对一查询 一对一查询的模型 用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户 一对一查询的需求:查询一个订单 ...
- 【AI】PytorchSegmentCode
From: https://liudongdong1.github.io/ 0. 基础配置 0.1. 设置随机种子 def set_seeds(seed, cuda): ""&qu ...
- 【设计模式】DDD 设计理念
From: https://liudongdong1.github.io/ 微服务架构,在集中式架构中,系统分析.设计和开发往往是独立进行的,而且各个阶段负责人可能不一样,那么就涉及到交流信息丢失的问 ...
- SpringSession(redis)
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- MySQL:互联网公司常用分库分表方案汇总!
转载别人 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用 ...
- xxx.pch(No such file or directory)
今天在写一个组件的Demo,发现把一个现象. 我把stdafx.h和stdafx.cpp从工程删除了(本地也被我删除了).后来又想把它加回去,就用新的工程生成这两个文件.然后拷贝过来,增加到工程. 但 ...
- Java中的比较器(排序)
"顺序"在任何一个领域里都是非常重要的一个概念,程序也不例外.不同的执行顺序,能对你的执行结果产生直接影响. 既然涉及到顺序,那就要求排序.所以本文讨论的就是排序中使用到的比较器C ...