写点什么

Wormhole 流式处理平台设计思想

  • 2020-02-13
  • 本文字数:3058 字

    阅读完需:约 10 分钟

Wormhole 流式处理平台设计思想

导读:互联网的迅猛发展使得数据不再昂贵,而如何从数据中更快速获取价值变得日益重要,因此,数据实时化成为了一个大趋势。越来越多的业务场景需要实时分析,以极低的延迟来分析实时数据并给出分析结果,从而提高业务效率,带来更高价值。流式处理作为实时处理的一种重要手段,正在因数据实时化的发展而蓬勃发展。本文是敏捷大数据(Agile BigData)背景下的实时流式处理平台 Wormhole 的开篇介绍。Wormhole 具体是一个怎样的平台呢?一起来看一下吧!


一、Wormhole 背景介绍


在流式计算领域,越来越多成熟的技术框架出现在开源世界,如 Storm、Heron、Spark、Samza、Flink、Beam 等。流式技术也逐步进化发展,支持流上丰富计算语法(类 SQL)、支持 at least once 或 exactly once 语义、支持高可靠高可用、支持高吞吐低延迟、支持基于事件时间计算、支持统一整合接入抽象等,这些都从不可能变为可能。


然而,虽然流式处理的技术已经很丰富,流式处理在企业中的实施仍然存在较大难度,主要原因是成本高,需求上线周期长等,而产生这样问题的原因又分两个方面,一是企业组织结构,二是技术。


传统数据仓库和 BI 的组织结构都是集中相关技术人员成立独立大数据部门,各个业务部门向其提需求,做定制化开发。


1530517677780039278.png


企业组织结构


如上图,大数据部门不仅仅做大数据环境运维,还做定制化开发和线上业务维护。恰恰这两点会消耗大量的人力,也增加了管理和沟通成本。举一个需求开发的例子,如下图:


1530517692740038104.png


需求开发流程


上图是企业普遍使用的一个开发流程,这里边就反应出一些问题:


· 人力成本高


从此图可以看出,至少需要 3 个角色的人员才能完成一个需求,而且流式开发人员要花很多时间了解需求、业务、表结构等等


· 上线周期长、效率低


所有需求都是由产品人员提出,由业务人员分析,然后与流式开发人员一起设计开发完成,且需要大量时间测试及验证结果


· 复用低


在需求中,有很多业务是类似的,但因业务和定制化问题,所以无法很好的做到代码复用,导致重复开发比较多


· 业务维护成本高


当上线的需求有变化时,就要在原有代码的基础上改造,流式处理开发人员也需要再一次了解业务流程、表结构等等,还是需要很多的人力资源,并且周期也很长,同时改动会增加出问题的概率


· 大量消耗资源


为了功能隔离和降低维护难度,每个定制化功能都要启动一个流式应用,无法复用,需要占用大量硬件资源


目前流式处理的种种问题很大的制约了企业实时大数据的发展,各个公司都在寻找一条更轻量的解决之道。我们根据多年在实时大数据项目中的实践和经验积累,自主研发了流式处理平台——Wormhole,很大程度上解决了上述各类问题。下面我们来介绍一下 Wormhole 的具体情况。


二、Wormhole 是什么


Wormhole 是一个面向实时大数据项目实施者的流式处理平台,致力于统一并简化大数据开发和管理,尤其针对典型流式实时/准实时数据处理应用场景,屏蔽了底层技术细节,提供了极低的开发门槛。项目实施者只需简单配置及编写 SQL 即可支持大部分业务场景,使得大数据业务系统开发和管理变得更加轻量、可控可靠。


1530517731779098626.png


Wormhole 数据处理样例


Wormhole 主要基于 Spark 技术,实现了基于 SQL 的流上数据处理和异构系统幂等写入等相关功能。如上图所示,Wormhole 接入流上的数据,然后将数据中的出生日期通过用户编写的 SQL 处理为年龄,写入到另外一个存储系统中。


Wormhole 通过技术手段实现基于 SQL 的流式处理方案,大大降低了流式处理的技术门槛;同时通过平台化和可视化等实现了职能的变化,减少了整个需求生命周期的参与角色数量,精炼了整个开发过程,进而缩短了开发周期,也减少了开发和维护成本。


三、Wormhole 设计目标


基于敏捷大数据的思想,Wormhole 的设计目标如下:


· 平台化/组件化


通过平台化支持,组件化组装实施,可以快速对原型进行验证,和需求方形成反馈闭环快速迭代


· 标准化


对数据格式进行标准化,达到通用效果,减少数据格式化和维护的成本


· 配置化/可视化


用户可视化配置、部署、管理、监控,降低大数据产品开发门槛,确保高质量产出


· 低延迟/高性能/高可用


根据实时性的要求,流式处理要求更低的延迟,并且要求更高的吞吐量,以及容错能力,保证系统 7*24 正常运行


· 自助化/自动化


让企业从数据中心化转型为平台服务化,让每个数据从业者都能够有更多的自助服务,并释放数据处理能力,系统替代人工完成重复低级的工作,让从业者回归数据和业务本质


Wormhole 平台的建设带来的效果主要体现在以下几方面:


· 组织结构更合理:


如下图,大数据相关部门不再做定制化开发和业务维护,而是更专注平台化和大数据环境的稳定,大大减少了人力资源的浪费


1530517744799079386.png


基于 Wormhole 的组织结构


· 降低了流式处理开发的技术门槛


流式处理的开发模式变为了业务人员通过可视化配置和编写 SQL 即可完成 80%以上的业务场景,不再需要对流式处理技术有很深的理解


· 缩短了需求上线周期:


如下图所示,一个需求从提出到上线只需要产品人员和业务人员,大幅降低了沟通和学习成本,进而大大缩短了需求开发上线周期。


1530517757120098805.png


基于 Wormhole 的需求开发流程


四、Wormhole 设计规范


1530517780607062902.png


Wormhole 流程设计图


上图是 Wormhole 的一个设计介绍,体现了流式处理的从输入到输出的过程,在这个过程中,Wormhole 定义新的概念,将整个流式处理进行了标准化,将定制化的流式计算变为标准化的流式处理,并从三个纬度进行了高度抽象。


· 统一数据逻辑表命名空间——Namespace


Namespace:数据的“IP”,通过 7 层结构唯一定位数据对应的物理位置,即


[Data System].[Instance].[Database].[Table].[Table Version]. [Database Partition].[Table Partition]


1530517847788009164.png


· 统一通用流消息协议——UMS


o UMS 是 Wormhole 定义的流消息协议规范


o UMS 试图抽象统一所有结构化消息


o UMS 自身携带结构化数据 Schema 信息,方便数据处理


o UMS 支持每一个消息中存在一份 Schema 信息及多条数据信息,这样,在存在多条数据时可以降低数据大小,提高处理效率


说明:


1530517895928046153.png


o protocol-type 目前支持 data_increment_data(增量数据)和 data_initial_data(初始化全量数据)


o schema-namespace 指定数据对应的 namespace


o schema-fields 描述每个字段的名称、类型、是否可空。ums_id_代表记录 id,要求保证递增;ums_op_代表数据操作(i:插入;u:更新;d:删除);ums_ts_代表数据更新时间


o payload-tuple 指一条记录的内容,与 schema-fields 一一对应


注:在 Wormhole_v0.4.0 版本后,应社区需求,支持用户自定义半结构化 JSON 格式


· 统一数据计算逻辑管道——Flow


o Flow 是 Wormhole 抽象的流式处理逻辑管道


o Flow 由 Source Namespace、Sink Namespace 和处理逻辑构成


o Flow 支持 UMS 和自定义 JSON 两种消息协议


o Flow 支持 Event 和 Revision 两种 Sink 写入模式


o Flow 统一计算逻辑标准(SQL/UDF/接口扩展)


说明:


1530517906927020049.png


Flow


上图中蓝色框和箭头组成了一个 Flow,首先从 TopicA 中读取 Namespace1 (SourceNamespace)的数据,数据协议为 UMS 或者自定义 JSON,然后处理用户配置好的数据处理逻辑,输出到 Namespace2 (SinkNameSpace)对应的数据系统中,写入支持 insertOnly 和幂等(对同 key 且不同状态的数据保证最终一致性)。


作为一个实时大数据流式处理平台,Wormhole 的设计目标和设计规范最终都是为流上处理数据而服务。本篇为 Wormhole 的具体功能做铺垫,下篇系列文章我们将为大家介绍 Wormhole 的具体功能。


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/156


2020-02-13 21:52866

评论

发布
暂无评论
发现更多内容

知识库对于企业有什么意义

小炮

TDengine 2.6 正式发布,新增大量计算函数

TDengine

数据库 tdengine 物联网

隔空手势交互,如何在现实世界上演“得心应手”?

阿里云CloudImagine

计算机视觉 音视频 视频云

M_7: 王者荣耀商城异地多活架构设计

Jadedev

架构训练营

Typora+PicGo+阿里云OSS配置低成本图床

DS小龙哥

6月月更

听说你写sql很溜,一条sql查询语句是如何执行的?

西格玛男人Jerry

sql 流程 查询 MySQL 数据库

优酷老片修复算法,超高清重温童年回忆

阿里巴巴文娱技术

算法 计算机视觉 视频 多媒体

当 diesel 遇见 jsonb

伍思默

最好用的 5 个 React select 多选下拉菜单组件测评推荐

蒋川

低代码 开发工具 React 组件 tab

Android技术分享| 利用Kotlin协程,多任务并行,测试RTM SDK性能

anyRTC开发者

android kotlin IM 移动开发 实时消息

FlyweightPattern-享元模式

梁歪歪 ♚

设计模式

趣步运动挖矿系统开发,dapp模式定制

开发微hkkf5566

阿里云发布性能测试 PTS 2.0:低成本、高效率、多场景压测,业务稳定性保障利器

阿里巴巴云原生

阿里云 云原生 性能压测 PTS

焱融看|非结构化数据场景下,数据湖到底有多香?

焱融科技

数据湖 文件存储 非结构化数据 分布式文件存储 分布式文件系统

git代码管理可视化工具 :Sourcetree(mac环境)

西格玛男人Jerry

macos git 工具 代码管理

自己如何做一个网站

源字节1号

网站开发

LabVIEW控制Arduino驱动数码管(基础篇—11)

不脱发的程序猿

单片机 LabVIEW LIAT Arduino Uno 驱动数码管

那篇千猫图爬虫竟被反爬了,今日复盘解决一下,Python爬虫120例

梦想橡皮擦

6月月更

泰山众筹代币燃烧模式dapp系统开发逻辑分析

开发微hkkf5566

CorelDRAW2022安装步骤及序列号

茶色酒

cdr2022

融云互动游戏 SDK, 丰富娱乐玩法,「破冰」陌生人社交

融云 RongCloud

浅拷贝、深拷贝

源字节1号

软件开发 前端开发 后端开发 小程序开发

MYSQL 几个常用命令使用

CRMEB

Serverless Job——传统任务新变革

阿里巴巴云原生

阿里云 Serverless 云原生 Job

CompositePattern-组合模式

梁歪歪 ♚

设计模式

成为零代码布道者,推广明道云获取奖励

明道云

并发编程从入门到放弃系列开始和结束

艾小仙

Java 并发编程 多线程 异步

C/C++ 单元自动化测试解决方案实践

vivo互联网技术

c c++ 自动化测试

Python 中堪称神仙的6个内置函数

开发微hkkf5566

BridgePattern-桥接模式

梁歪歪 ♚

设计模式

手把手推导分布式矩阵乘的最优并行策略

OneFlow

模型 教程分享 分布式矩阵乘 数据并行

Wormhole 流式处理平台设计思想_文化 & 方法_赵平_InfoQ精选文章