以下为演讲者PPT对应速记稿:


聚星*引航|“Slipstream: 实时的复杂流处理引擎”演讲速记(附PPT)_java

 首先介绍的什么是Slipstream。在介绍Slipstream之前,我想向大家分享下今年3月在旧金山Strata大会上的一些见闻。大会上一共展示了10多种流处理的产品,从这些流处理模型的原理上可以主要分为两种。

一种是基于Micro-batch的微批处理模式,主要代表产品有Spark Streaming以及Structed Streaming。

另一种是基于事件驱动的处理模式,主要的代表作品有开源的Storm, Flink, Herom以及商业版的 DataTorrent, Sqlstream, Confluent。从现有市场上的产品分布可以看出,基于事件驱动处理模式的流处理产品的比例远大于微批模式。


聚星*引航|“Slipstream: 实时的复杂流处理引擎”演讲速记(附PPT)_java_02

回顾流计算模型的发展历程,最初基于事件驱动模型的流处理引擎 Storm 具有较低的延迟,但是其所能做的复杂分析能力有限,而后来的Spark中出现了基于Micro-batch模型的Spark Streaming. 它相比于Storm而言能够处理更加复杂的场景,例如支持窗口计算,关联操作等,但是它的缺点也很明显,由于是基于Micro-batch的计算模式,因此延迟会比较高,大约是在几百毫秒到几秒不等。 最近两年另一种基于事件驱动的流处理产品Flink受到越来越多的关注,它不仅仅能够提供批处理的接口,而且本身基于事件驱动,具有较低的延迟,同时也支持窗口等复杂分析,但Flink目前的功能完整程度以及易用程度还不够高。随着物联网的兴起,用户对流计算产品的需求不仅仅要求低延迟,具备复杂分析的能力,还需要提供复杂事件处理,机器学习能功能,而且用户更希望能够降低使用成本,使用最简单的方式例如SQL来构建自己的流应用。所以,Slipstream就是为了满足用户的这些需求而研发的新一代流处理引擎。


物联网的兴起意味着用户对流处理产品的需求已经不仅仅局限在实时的ETL工具,更需要具备能够处理复杂业务的分析能力,企业级流处理产品必须具备的关键指标包含高性能,易用性,高可用,安全性以及智能化。

其中高性能指产品必须具备低延迟和高吞吐的能力,流处理产品必须能够进行水平扩展以应对数据量及业务的增长。

易用性指的是具备灵活开发部署的能力,当前很多实时的业务都是根据传统的批处理业务进行迁移构建的,所以能够灵活的将这些业务迁移到流处理平台上是企业在产品选型时的重要指标。

另一个比较重要的指标就是高可用性,这方面不仅要保证流处理平台的稳定性,而且要保证在平台发生故障时能够在保证数据完整的前提下快速的恢复。

当然更不可忽视的是产品所提供的安全性,不仅要保证数据对外的安全,还要保证在企业内部不同业务之间的数据隔离与控制。随着技术的发展,企业也越来越希望能够使用流处理平台完成更多复杂分析的能力,例如在流处理平台上做机器学习等,这也是流处理产品未来发展的一个趋势。


下面简单介绍下Slipstream的基本架构,自底向上分别是存储层、计算层和接口层。

存储层:Slipstream能够适配多种存储,使得数据灵活流转。

计算层:包含分布式计算系统的5大模块:数据源管理,任务管理服务,分布式计算引擎,存储管理和输出管理。Slipstream中的计算引擎是基于Spark实现的事件处理模型,使得实时处理延迟达到毫秒级别,并具有单节点百万级别的吞吐;同时能够进行批处理任务处理,实现实时处理和批处理的完美融合;通过流式任务管理服务可以实现应用和资源的管理和隔离。

接口层:Slipstream提供多种SQL交互接口让用户使用、另外还支持CEP功能和实时机器学习接口。通过Slipstream接口层提供的简单易用的接口,可以帮助用户实现实时告警、时间窗口统计以及在线数据挖掘等功能。


说了这么多,大家可能会在想,Slipstream在对比市面上的其他产品,它的突出点在哪里,为什么非要选择星环的Slipstream呢。下面我们来看一个Slipstream在交通行业的用例。从例子上看,这张DashBoard主要包含4块不同的流计算分析结果,如果使用Spark Streaming或者是Flink所提供的编程接口,需要编写大量业务上的逻辑代码而且需要考虑逻辑代码的性能优化,可能需要5天时间或者是更长的时间才能完成这样一个报表展示。那么如果使用Slipstream的话,只需要简单的几条SQL就能够完成所有的报表的业务构建,可能只需要10分钟的时间。通过刚刚的例子可以看出,Slipstream具有很好的易用性,目前Slipstream支持完整的SQL2003语法以及PLSQL。用户可以很方便的把原有的业务迁移到Slipstream平台,另外Slipstream还能自动进行性能优化,用户甚至无需考虑底层平台的复杂性。


Slipstream提供完整的窗口语义支持,包含Sliding Window,Session Window以及Global Window。Window就是将一系列无界的流数据以window为单位分割的数据集,这些window 的计算不仅仅支持系统时间,而且支持事件时间即数据本身所带的时间戳。

Sliding Window是最常见的窗口计算方式,为了保证结果的正确性,需要根据数据产生的时间进行窗口划分;另外由于业务系统的不可靠,往往会导致数据到达流处理平台的顺序无法保证时间的有序,Slipstream同样能够处理乱序数据。

Session window是指将满足一组操作Pattern的数据划分到窗口中,例如网站对用户行为分析,则需要将用户从登陆到登出之间的操作分到一个窗口中,进行统计分析。

Global window是指对业务从启动开始到目前为止划分的窗口,常见的业务需求例如:要统计股票交易从开市到当前时间的总的成交额。


利用Slipstream所提供的window计算的功能,Slipstream可以做到更复杂的分析,例如对数据的关联操作,Slipstream不仅仅支持两个不同的流之间的关联,还支持流与一个历史数据表的关联操作,典型的应用例如在交通行业的实时黑名单比对。

如果只是对实时数据进行分析,能处理的业务还是很有限,例如智能交通中比较常见的业务:黑名单车辆、未年检车辆等,需要和历史数据库中的数据进行比对分析。


Slipstream支持用户通过SQL的方式将实时数据和历史数据进行关联分析,支持的数据库包括:传统的关系数据:Oracle, SQLServer, 星环的产品: Holodesk, 基于Hbase的Hyperbase、以及基于ElasticSearch。除此之外,Slipstream不仅支持从以上数据存储中读取数据,还支持将结果写回到其中,进而方便的和现有业务系统进行对接;另外Slipstream还支持将结果写回到一个数据流,例如Kafka,从而帮助企业构造数据总线。


Slipstream能够支持CEP和实时的机器学习,以帮助用户挖掘新的业务模式,探索实时处理的无限潜力。下面我们来介绍一个在Slipstream上构建的一个银行卡盗刷实时预警的CEP案例。北京的一个ATM机上在11:00分检测到一张IDA的银行卡发生了取款交易,而5分钟后在上海的一个ATM机上同样出现了这张A银行卡的交易,明显5分钟内同一张银行卡在异地发生的交易,就很有理由怀疑其发生了盗刷事件,需要给用户发出告警。一般来说,复杂事件的处理分为事件和操作两个部分,事件就是流中的数据,通常会在事件上加上过滤条件,例如上述例子中的交易行为。操作即事件的逻辑顺序及其生命周期的控制,上述例子中有两种操作,即第二次取款事件发生在第一次取款事件之后且两次事件时间间隔在一小时之内。

我们将这种通过操作组合在一起的一系列事件称为复杂事件模式,Slipstream所支持的就是在实时数据流中找到满足这种模式事件的组合,当前市面上流行的Spark StreamingStorm目前还不支持CEP的处理,而Flink虽然可以支持CEP的操作,但是无法在模式中体现事件的关系,用户需要编写自己的逻辑代码来完成这部分的判断操作,因此带来额外的使用上的代价以及性能上的损失。而Slipstream提供的SQL使用PATTERN关键字表示定义一个CEP模式,使用逗号来分割不同之间之间的顺序,WITHIN关键字定义了事件生命周期。这样通过一条简单的SQL就实现了过去可能需要上百行逻辑代码才能完成的功能。


聚星*引航|“Slipstream: 实时的复杂流处理引擎”演讲速记(附PPT)_java_03

Slipstream还支持实时的机器学习,通过星环的Transwarp Sophon产品可以做到离线训练,实时流数据经过Slipstream处理之后保存到分布式存储系统中,Sophon可以对保存在分布式存储中的流数据进行分布式训练并同步更新在线预测模块中的模型,通过各种分类聚类算法对实时流数据进行在线的预测。


聚星*引航|“Slipstream: 实时的复杂流处理引擎”演讲速记(附PPT)_java_04

下面简单介绍一个CEP结合流机器学习的案例。我们假设有刷卡交易信息,网络浏览信息,地理信息以及转账交易信息组成的数据流,改数据流通过CEP定义的规则可以定义出诸如异地异常交易,短期大数额转账等时间的告警信息,如果满足了CEP所定义的规则,那么就可以实时给出告警。如果暂时不满足CEP的规则,我们也不能断定这些事件不存在发生的可能性。那么这部分数据就需要进行特征提取,随之进行分类模型预测或者是多层神经网络模型的预测,这样就可以结合机器学习给出报警信息,告诉用户可能有存在的风险。


聚星*引航|“Slipstream: 实时的复杂流处理引擎”演讲速记(附PPT)_java_05

当前一些企业尤其是金融行业涉及到很多敏感的数据信息,因此数据安全性往往称为企业选型的重要指标,Slipstream在用户登录认证方面支持Kerberos和LDAP两种方式,通过登录认证可以保证只有经过授权的用户才能登录系统操作,另一方面可以对用户的操作以及操作行为进行记录,这样能够方便的追踪系统的行为。


聚星*引航|“Slipstream: 实时的复杂流处理引擎”演讲速记(附PPT)_java_06

此外,Slipstream支持用户使用Application和job来管理开发的流处理业务。每个job是用户开发的具体的流处理的任务,比如一个ETL操作或者是一个窗口上的统计。Application通常定义为不同的业务,每个业务通常是一组用户开发的Streamjob的集合,这样做的好处是例如在同一个公司内部,不同的部门之间的流计算任务可以做到相互隔离。针对不同的用户可以进行ACL权限控制。当用户启动Application的时候,Slipstream还支持将任务提交到一个队列中,这样保证了使用的资源不受其他Application的影响,同时利用Application的优先级策略允许在资源紧张的情况下,优先保证高优先级的Application执行。


聚星*引航|“Slipstream: 实时的复杂流处理引擎”演讲速记(附PPT)_java_07

Slipstream所提供的功能与当前主流产品进行对比,主要在易用性,复杂分析能力,应用资源隔离,复杂事件处理以及流式机器学习方面有这较大的优势,其支持标准的ANSI SQL 2003以及PLSQL的接口能够最大程度降低用户构建流应用的成本,并提供多流关联的复杂分析能力,资源隔离等其他主流流计算产品例如Spark Streaming, FLink不支持的功能。最后,Slipstream提供的完善的CEP以及机器学习功能能够更大程度的帮助用户构建最有价值的流数据分析应用。

Slipstream可应用在诸多行业中,比如在传统行业帮助用户构建实时的数据仓库,在金融行业进行实时反欺诈检测,在物联网行业入制造业,能源业等对设备的性能进行实时预测以提供预测性维护,对供应链进行优化,在保险行业,医疗行业可以通过实时计算挖掘潜在用户,拓展新业务。相信通过Slipstream提供的高性能,简单易用以及完善的功能能够在当前各行各业的大数据分析领域构造稳定而又高效的解决方案。