乐趣区

关于kafka:数栈产品分享基于StreamWorks构建实时大数据处理平台

数栈是云原生—站式数据中台 PaaS,咱们在 github 和 gitee 上有一个乏味的开源我的项目:FlinkX,FlinkX 是一个基于 Flink 的批流对立的数据同步工具,既能够采集动态的数据,也能够采集实时变动的数据,是全域、异构、批流一体的数据同步引擎。大家喜爱的话请给咱们点个 star!star!star!

github 开源我的项目:https://github.com/DTStack/fl…

gitee 开源我的项目:https://gitee.com/dtstack_dev…

2020 年春节期间,一场从天而降的疫情在全国蔓延开来,突破了大家原有的工作生活节奏。疫情期间,大家宅在家就能随时看到实时的大数据疫情地图,能够随时刷到本人以后感兴趣的抖音视频,这所有背地依赖的最重要的技术,就是实时大数据处理技术。

当初疫情行将过来,国家提出要放慢大数据中心等新型基础设施建设,实时大数据处理平台建设成为企业数智化转型过程中越来越重要的局部。

一、什么是实时计算

在大数据处理畛域,通常依据数据的不同性质,将工作划分为实时计算与离线计算,以温度传感器的场景举例:假如某城市装置了大量的温度传感器,每个传感器每隔 1min 上传一次采集到的温度信息,由气象核心对立汇总,每隔 5 分钟更新一次各个地区的温度,这些数据是始终源源不断的产生的,且不会进行。实时计算就次要用于“数据源源不断的产生,而且不会进行,须要以最小的提早取得计算结果”的场景,这种最小的提早通常为秒级或分钟级。

为了满足这种数据量很大,而且实时性要求又十分高的场景,通常会采纳实时计算技术,实时计算的“数据源源不断”的特定决定了其数据处理形式与离线是截然不同的。

Figure 1 实时计算和离线计算的区别

离线计算的批量、高延时、被动发动的计算特点不同,实时计算是一种继续、低延时、事件触发的计算工作。离线计算须要先装载数据,而后提交离线工作,最初工作计算返回后果;实时计算首先要提交流式工作,而后等实时流数据接入,而后计算出实时后果流。

Figure 2 实时计算和离线计算的区别(形象图)

形象点能够了解为离线计算是开着船去湖里(数据库)打渔,实时计算为在河流(数据流)上建设大坝发电。进一步发散,湖泊的造成依赖河流,河流确定高低边界就是湖泊;其实,离线计算能够了解为实时计算的一种特例。

二、实时计算能解决的问题


Figure 3 实时计算能解决的问题

从技术畛域来看,实时计算次要用于以下场景:

  • 基于 Data Pipline 的实时数据 ETL:目标是实时地把数据从 A 点传输到 B 点。在传输的过程中可能增加数据荡涤和集成的工作,例如实时构建搜寻零碎的索引、实时数仓中的 ETL 过程等。
  • 基于 Data Analysis 的实时数据分析:依据业务指标,从原始数据中抽取对应信息并整合的过程。例如,查看每天销售额排行前 10 的商品、仓库均匀周转工夫、网页均匀点击率、实时推送关上率等。实时数据分析则是上述过程的实时化,通常在终端体现为实时报表或实时大屏。
  • 基于 Data Driven 的事件驱动利用:对一系列订阅事件进行解决或作出响应的零碎。事件驱动利用通常须要依赖外部状态,例如点击欺诈检测、风控系统、运维异样检测零碎等。当用户的行为触发某些危险控制点时,零碎会捕捉这个事件,并依据用户以后和之前的行为进行剖析,决定是否对用户进行危险管制。

三、实时开发的全链路流程


Figure 4 实时开发的全链路流程

实时采集——应用流式数据采集工具将数据流式且实时地采集并传输到大数据音讯存储(kafka 等),流式数据存储作为实时计算的上游,提供源源不断的数据流去触发流式计算作业的运行。流数据作为实时计算的触发源驱动实时计算运行。因而,一个实时计算作业必须至多应用一个流数据作为源。每一条进入的流数据将间接触发实时计算的一次流式计算解决。数据在实时计算零碎中解决剖析后随机写到上游数据存储,上游数据库个别与业务相干,能够用来做实时报表、实时大屏等数据生产。

四、实时采集 — 全链路实时开发平台的要害

整个全链路的实时开发中,实时采集是实时计算的上游。对于很对企业而言,自身曾经有数据存储系统,然而很大一部分都是离线的关系型数据库。如何将这些离线的关系型数据库的实时增量数据,提供给实时计算去剖析,是一个亟需解决的环节。如下图所示,是袋鼠云实时数据采集工具的性能架构。

Figure 5 实时数据采集工具 FlinkX 数据流程

袋鼠云实时数据采集作为 StreamWorks 平台的一个模块,有以下性能特点。

  • FlinkX 反对批量数据抽取,同时反对实时捕获 MySQL、Oracle、SQLServer 等变动数据,实现批流对立采集。
  • 底层基于 Flink 分布式架构,反对大容量、高并发同步,相比单点同步性能更好,稳定性更高。
  • 反对间接读取数据库 Binlog 的形式实时同步,也反对距离轮询形式实时同步。
  • 反对断点续传和脏数据记录,实时数据采集的 metric 曲线展现。

五、StreamWorks 实时开发平台介绍

袋鼠云实时开发平台(StreamWorks)基于 Apache Flink 构建的云原生一站式大数据流式计算平台,涵盖从实时数据采集到实时数据 ETL 的全链路流程。亚秒级别的解决延时,Datastream API 作业开发,与已有大数据组件兼容,帮忙企业实时数据智能化转型,助力新型基础设施建设。

在以往的数据开发技术栈中,SQL 语言能解决大部分业务场景的问题。StreamWorks 的外围性能是主打以 SQL 语义的流式数据分析能力 (FlinkStreamSQL),升高开发门槛。提供 Exactly-Once 的解决语义保障,保障业务准确统一。

Figure 6 StreamWorks 性能架构

如上图所示,StreamWorks 蕴含如下几个模块:

  • 实时采集:反对 MySQL、SQLServer、Oracle、PolarDB、Kafka、EMQ 等数据源实时数据采集,通过速率和并发数管制可帮忙用户更精确的管制采集过程。
  • 数据开发:反对 FlinkSQL、Flink 工作类型,FlinkSQL 作业提供可视化存储配置、作业开发、语法查看等性能;Flink 工作反对上传 jar 包的形式运行实时开发作业。
  • 工作运维:工作运行状况监控,数据曲线、运行日志、数据延时、CkeckPoint、Failover、属性参数、告警配置等性能。
  • 项目管理: 用户治理、角色治理、我的项目整体配置、我的项目成员治理等。

六、StreamWorks 实时大数据开发平台的劣势


Figure 7 StreamWorks 平台层级

如上图所示,StreamWorks 实时大数据开发平台基于 Apache Flink 计算引擎,做了一层 SQL 化的封装,最上层有一个在线开发的 IDE 平台。平台有以下几个劣势点:

  • 简略易用: 提供在线 IDE,定制化适配 FlinkSQL 的开发工具!
  • 可视化 DDL:提供可视化建表工具,配置参数即可实现 DDL!
  • 内置函数:提供丰盛的 FlinkSQL 内置函数,简化开发工作!
  • 高效运维: 提供多达几十个运行指标,解决开源运维难题!
  • 实时采集:提供实时采集工具,撑持全链路实时开发平台!
  • FlinkX:自研的批流一体的数据采集工具,曾经开源!

    Figure 8 传统开发模式 VS StreamWorks 开发模式

    七、十四行代码搞定实时业务开发

讲了这么多,咱们的产品到底如何不便大家进行实时业务逻辑开发的,咱们还是拿最常见的网站流量剖析的例子阐明下。比方,某网站须要对拜访起源进行剖析:

如下图所示,从日志服务读取该站点拜访日志,解析日志中的起源并查看起源是否在感兴趣的网站列表中(相似起源网站的白名单,保留在 MySQL 中),统计来自各个网站的流量 PV,最终后果写出到 MySQL。

Figure 9 业务逻辑流程图

用 StreamSQL 代码实现的话非常简单,只须要 14 行伪代码即可搞定。

CREATE TABLE    
log_source(dt STRING, …)  
WITH (type=kafka); 
CREATE TABLE     
mysql_dim(url STRING, …, PRIMARY KEY(url))
WITH (type=mysql);  
CREATE TABLE     
mysql_result(url STRING, …, PRIMARY KEY(url))
WITH (type=mysql);  
INSERT INTO mysql_result
SELECT    
l.url, count(*) as pv …
FROM  log_source l JOIN mysql_dim  d ON l.url = d.url
group by l.url

八、基于 StreamWorks 构建实时举荐零碎

个别的举荐零碎都是基于标签来实现的,基于标签的举荐其实利用很广泛,比方头条,比方抖音,都用到了大量的标签,这样的举荐零碎有很多长处,比方实现简略、可解释性好等。如何通过标签来实现实时商品或者内容的举荐呢?

首先一个新的用户在注册 app 账号的时候会填写一些比拟固定的数据,比方年龄、职业等信息,这些信息能够通过离线计算剖析出长期趣味标签的后果,存储到长期趣味标签库。用户在最近感兴趣的内容(比方最近 10 分钟内关注的信息点)能够通过实时计算剖析出短期的趣味标签后果,而后再通过实时开发的数据流关联维表的性能,把短期的感兴趣标签和长期趣味标签库做关联,最终生成新的举荐内容给到客户端,造成一个用户数据流的闭环,从而实现一个简略的实时举荐零碎。具体流程如下图所示。

Figure 10 基于 StreamWorks 构建实时举荐零碎

九、结语——把将来变成当初

疫情行将过来,生存还要持续。随着“新基建”建设一直深入上来,越来越多的实时化场景会呈现在咱们生存中。袋鼠云作为新基建解决方案供应商,咱们的口号就是把将来变成当初,在将来会赋能更多的企业实时化转型。

退出移动版