BT

你的观点很重要! 快来参与InfoQ调研吧!

在线讨论会:复杂事件处理与实时分析应用
录制于:

| 受访者 卢东明 关注 0 他的粉丝 , 开云 关注 0 他的粉丝 作者 InfoQ中文站 关注 15 他的粉丝 发布于 2011年6月7日 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术
01:16:00

个人简介 卢东明,现任Sybase软件(中国)有限公司技术总监, 拥有长达17年数据库、数据仓库开发管理经验。

开云,开云先生现任东南融通(中国)系统工程有限公司创新中心业务总监, 拥有长达13年金融行业信息化工作经验,擅长EDW/BI技术及资本市场创新业务、银行IT战略规划、CRM、风险管理等。

关于本研讨中使用的pdf,请在这里下载

   

1. 首先,我想请问一下卢东明先生, 复杂事件处理(CEP)是什么时候出现的一项技术?它是怎么定义的?有哪些具体的技术,它跟我们之前看到的那些分析技术有什么不同?

CEP这个词,英文全称叫Complex Event Processing,中文翻译成复杂事件处理。

其实在生活中很多时候我们会遇到复杂事件处理的情况,例如每个汽车里的电脑,实时监控着很多东西,比如车速,胎压,或者如油温等其他各项指标。在这样一个复杂的环境里,实际上电脑是通过事件来监控的。电脑里会定义什么叫排压降低事件。那怎么定义呢?15分钟内胎压如果从45PSI下降到41PSI,这就被认为是胎压降低事件。另外还有爆胎事件,什么叫爆胎事件?5秒钟内胎压如果从45PSI下降到20PSI,这就被认为是爆胎事件。所以汽车的电脑定义了很多各种各样的事件,这些事件可以称为简单事件。但是这些简单事件通过复杂组合,最终就构成了复杂事件。比如说爆胎加上车停止,加上司机离开座椅,这些事件组合起来,如果在很短的时间内发生,这就构成了司机飞出的事故事件。这是一个事故,在我们生活中其实每天都会遇到这样的复杂事件处理场景。

这个场景在IT领域里就变成了CEP这个概念,CEP正在逐渐成为IT领域的一个分支。为了帮助大家更好地理解什么叫复杂事件处理,我们将它与熟悉的几项IT技术进行比较:数据库,传统的商务智能,以及消息队列。我们从两个不同的维度来看这几项技术:一个维度是事件复杂度,也就是这个事件到底需要多复杂的计算;另一个维度是事件处理速度。

从这两个纬度上看,我们可以看到,关系型数据库解决的是一些事务,这样的一些事务实际是在一个秒级或分钟级完成的简单事件。例如我在银行里转账,从一个帐号转一百块钱到另一个帐号里,这件事一两秒钟就完成了,这就是一个简单的事件。传统的BI技术是什么?它是一个低速却复杂的事情,当事务都完成后,要对事务进行分析。我要分析在过去的一个月或一个季度里,哪种类型的客户,哪个年龄层及的客户,对银行产生的价值最高。这就是一项根据历史数据来做分析的技术,这项技术是一件低速却复杂的事情。 消息队列是把一些信息快速地传递到下游,这是一个高速毫秒级的处理技术,但它对信息不作任何处理,所以我们说它是一个高速但简单的事件。CEP这项技术在这个象限图里是位于第一象限,它实际是高速毫秒级的,同时又能做复杂处理的。所以通过这样一个四象限图,我们应该能够理解CEP是在什么样的背景下产生的。

这张图更能帮助我们对CEP和大家比较熟悉的关系型数据库技术来进行比较。关系型数据库将产生的数据保存在磁盘中,然后通过调用实现查询与分析的功能,它是基于硬盘的,另外它是要先存储再处理查询,更像是水库的模式,信息就像水一样存在水库里面。但是,CEP好像右边的这个水管,它的处理模式是完全基于内存的,并不需要把数据存储起来,它是随着水在水管里地流动实时进行分析的。一个像水管,一个像水库,这两项技术听起来虽然非常不一样,但在实际上如果要达到同一效果,比如说想保证水库里没有任何泥沙,没有任何微生物,没有任何脏东西,可以通过两种方式去做。一种是在水库里找到所有的泥沙和微生物,我们大家很熟悉的数据库的操作是通过查询实现的,把符合泥沙、微生物这样条件的物体找出来,然后把它们清理掉,这样水库里的水就可以达到干净的效果。 同样也可以把规则应用到水管上,首先在水管上放一个监测器,当水流过这个水管时,只要满足了泥沙和微生物这些规则的时候,就实时把它过滤掉。这是两种不同的处理方式,但是最后处理结果实际上是一样的,一个是用查询去找数据,另一个是用数据去触发查询。这两种操作的特点不同,最后的效果是一个较慢一个较快,一个是处理大量的数据,一个是只处理水管里少量的数据。CEP最优秀的一个特质就是它的速度非常之快。

综上所述,CEP可归纳为四个大的特点,第一,它是基于数据流的操作,不是数据库的操作,这是水管与水库的差别;第二,它是对时间窗口进行操作,就像刚才我们说过的像汽车里的电脑一样,它监控过去的15分钟或者过去的5秒钟,实际都是对一个时间窗口进行操作;第三,它具有实时性,它可以实时分析产生一些结果;第四,它可以做相当复杂的运算。

   

2. 接下来请问一下开总,您是什么时候接触CEP技术的?您印象中CEP又是如何定义的?作为一个开发商来说,您是怎么样来选择CEP技术的?

谢谢主持人的提问。其实东南融通作为一家国内非常大的一家金融服务综合提供商,很早就开始关注CEP技术,但我们更多是从这项技术在业务中的应用场景这个角度来看这个这个技术本身的一些意义,包括这项技术给业务本身来带的价值。其实我们关注CEP技术是来自业务驱动。比如刚才讲到的流技术,流技术其实有非常多的应用场景,实际上我们会发现,在一些资本市场,特别是在证券、基金、资产管理公司里,会经常用到这类技术。因为这类技术会跟交易系统、行情系统关联,而在资本市场像这种行情或者交易,都是基于这种流数据,所以在这种流数据的处理方面CEP技术具有天然优势。除资本市场外,我们发现在电信和移动领域也会应用这类技术,主要是用在欺诈和风险控制领域。例如移动客户在移动支付领域和移动电子商务领域就常常会面临这种风险控制和欺诈控制,类似于盗链这类问题,一方面对性能提出很高要求,另一方面对规则的复杂性也提出了要求。所以从资本市场到移动到电信等很多领域,CEP技术具有一些不可取代的优势,我们就是从这样一些业务角度去看CEP的价值的。

   

3. Sybase作为一家CEP厂商,在2010年授予Sybase CEP一个奖项是最佳CEP技术。请卢东明先生给我们介绍一下,为什么要使用CEP,Sybase CEP技术到底有什么特点?

卢东明:为什么要使用CEP?随着用户对应用需求逐渐细化与提高,产生了一些非常特殊的领域需求。例如CEP可以做到实时分析,在金融行业里,如果你不能做到实时分析,这就好像两个人拿着不同的武器,一个人端着步枪另一个人拿着大炮,你还没有接触到他就已经被炸死了,在金融行业里这种案例非常多。当一家基金公司或者投资公司使用了CEP这样技术的时候,他的领先性会表现在最终的应用场景上,不是简单的说你有一项技术而我没有,而是我在这个市场上可能会比你早发现一些机会,市场大部分机会都被先进武器的使用者抢走,因为他们总能给以毫秒级响应但你却不能。实时分析这点是非常重要的。

CEP技术在金融、电信这些行业里的应用至少也有五六年时间了,在这段时间里,CEP软件已经到了一个非常高的水平,它可以快速进行应用开发。举个例子,不管是在金融行业资本市场里的算法交易或者程序化交易,还是电信行业里的一些欺诈行为的实时预防等,它可以在几个小时最多几天的时间里变成一个应用,而不是像以前从模型设计到应用开发,到最后上线部署要花几天甚至几个月的时间。这种快速应用开发也是CEP软件非常好的特点。

另外一个,非侵害的部署,比如说他基于流的这些整个数据的分析,他可以整个基于这个事件的这个架构,他可以在一个已有的应用系统里边,非常容易,而且侵害性非常小的部署进去,然后我可以对已有的系统提供新的价值,这是CEP技术的一些特性和一些优势。刚才提到Sybase CEP,我们有一份报告,就是由STAC,STAC全名叫Securities Technology Analysis Center,中文翻译叫做证券技术分析中心。STAC专门分析基于资本市场或者证券行业的一些技术平台,或是一些新的技术。STAC在过去一段时间里曾经对影响资本市场的很多技术做出过非常详细地评价和测试。我们这里有一个图是STAC 在过去一段时间里对CEP平台做的测试,Sybase Aleri Streaming Platform 这样的一个平台在STAC测试里,我们可以看到它的测试基准,用六核CPU可以实现每秒钟处理30万笔消息,这个效率是相当惊人的。对整个CEP软件来说有几个指标,一个是吞吐量,每秒或者说单位时间里边能够处理多少消息,一个是延迟,就是处理一笔消息到能够处理下一笔中间要花多少时间,这两个指标最终决定了一个CEP软件的优劣程度,这里我们看到每秒30万米这个消息处理的吞吐量是相当高的。另外延迟平均是1.29到1.56毫秒,随着每秒钟消息的增加,它的延时虽然也在增加,但是增加的速度是非常缓慢的。所以说Sybase Aleri Streaming Platform 这个平台在CEP处理效率上是非常高的,这也是为什么众多华尔街资本市场公司纷纷采用Sybase CEP技术实现他们在资本市场上的算法交易或者城市化交易这些场景。

再给大家举个例子,大家知道资本市场瞬息万变,前台后台都有大量的人在围绕这资本市场里的机会做研究和分析,像中国人寿的一支股票,很多人会分析一些规律,例如股票市场有一个规律叫CCI。什么叫CCI? CCI指的是Commodity Channel Index ,中文翻译成顺势指标。什么叫顺势指标?通过顺势指标来计算一直股票出现的超买或者超卖现象,来源可能是消息面,也可能是资本市场的资金流量等。产生了超买和超卖现象后,就会出现一个反向操作机会,也就是大家在买的时候出现了超买,那么你在那个时间点第一个卖的话你应该会赚到钱,反过来也一样,大家对一个负面消息做出了超卖的反应,你抢到股票的地点,实际上你也有赚钱的机会。CCI指标计算起来相当复杂,要对过去一段时间的股票做加权平均,然后把移动平均线里的股票再和它的标准方差再除以什么0.015再乘以个什么,所以这个运算量是很大的。如果想观测某些股票,或者观测市场上几十支股票,同时CCI在不断变化,可以想像,如果用数据库来做这样一个检测的话,数据库的运算量是非常大的,也很难实现高实时性。

CEP就可以通过这种实时运算方式来实现这样高运算,这里有几个截屏给大家看一下,这是Sybase CEP的一个开发界面,我可以用左下角这个很简单的流程处理模式,来解释如何在高点捕获卖的信号低点捕获买的信号。运算时CPU占用非常低,并且可以高效的捕获CCI指标,让资本市场上的用户能够实时捕获。所以我想这些算法在东南融通投入资本市场的使用。就市场前景来说,我不知道开总怎么看CEP技术在日益热烈的中国资本市场中的程序化交易或算法交易机会的,你们是怎么看这些使用场景的。

开云:我非常同意卢总刚才对CEP在资本市场运用场景的说明,在中国的资本市场,我们会发现,量化的交易技术还是接受得比较快。此外,国内的资本市场环境也在进一步的推动这些量化技术的发展,我举简单几个例子,第一个例子,我们会发现对于传统券商,主营业务有几块,第一个是经济业务,第二个是一些同行业务或者是直投业务,第三个是资产管理业务,还有第四个是自营业务,其他还有一些,比如说研究咨询类的业务等等。我们会发现,在这些业务当中,其实都会广泛的使用CEP技术,并且,国内资本市场的竞争压力也会迫使券商可能会采用最新一代的技术来提升他们的一些价值,就拿经济业务来讲,我们会发现,传统意义上它只是一个通道业务,就通道业务来讲,我们会发现通道业务在各个券商的竞争是非常非常激烈的,佣金率在不断下降,所以说券商也是苦不堪言。

那如何在这个经济业务当中脱颖而出?其实我们会发现,谁能给VIP大户提供更多更好的增值服务,谁就可能在经济业务当中吸收更多有价值的客户,其实对一些VIP大户来讲,有几个关注点。第一要关注收益,希望通过新的交易技术能够持续带来很大的收益。第二希望交易行为得到私密保护,这种组织建仓的行为不希望被别人所知道。第三希望交易成本比别人低。这就是一些VIP客户的基本想法,基于这几点我们会发现,算法交易这类在国外用得非常成熟的技术在中国就有用武之地了,其实算法交易就很好地解决了刚才我们说的三个问题,交易成本最优化,主力结构隐秘性,市场价格变化敏锐,能快速做出决策反应,所以这也能够持续推动证券经济业务脱颖而出提供更多增值业务,而不仅限于通道业务。

另外还有一个券商非常看重的是资产管理业务。最近监管层对资产管理业务有较大调整,把资产管理业务产品由原来的审批制改成了备案制,这意味着中国券商可以开发更多的资产管理产品,这种理财产品未来是可以跟基金跟公募基金、阳光私募,甚至一些资产管理公司的理财产品,还有银行理财产品进行竞争,那券商如何在这么多竞争对手当中把理财产品做得更好?

其实也是依赖于先进技术,像近来比较热的一些交易,如股指期货套利,如果利用这类股指期货套利工具,能够基于这个工具做出更好的产品,也会吸引大量客户来使用,所以我们会发现,在资本市场,特别是在券商,对这种新的交易技术,有非常浓厚的兴趣,此外,我们会发现,不光是券商,另一类在资本市场很重要的参与方公募基金对这类技术也很热衷,例如海外非常成熟的一些对冲基金就用了大量量化技术或交易类技术。此外,像公募基金对成本优化的考虑、主力行为建仓隐秘性的考虑,这都符合他们的需求。所以我们认为,在未来这段时间,像资本市场这类客户对以CEP为代表的新一代量化技术会持续热切关注。可能从尝试小范围的使用到最后大规模铺开,我们会发现将全面采用这些技术来发展他们的核心竞争力,这就是我对资本市场的一些基本看法。

   

4. 请问卢总,除了证券行业,比如电信等行业他们在哪些场合适用CEP技术?

确实是这样,CEP技术虽然源自资本市场最先的行业应用挑战,但现在我们越来越多看到CEP技术已经逐渐应用到其他行业,比如电信行业、政府行业,还有越来越多的行业都开始接受这样的观念和使用这项技术。

我举个例子,关于电信行业的实时欺诈分析,我们可以认为在银行业或其他相关行业有这种实时欺诈分析需求时都可以采用CEP技术。先介绍下背景,有个电信运营商做一个音乐共享基地,还有一些合作伙伴,有人是服务提供商,我们称之为SP,有人是内容提供商,与这个电信运营商共同来做这个内容共享的工作。电信运营商提供了平台,SP和CP提供的是产品和服务,当最终用户下载了音乐等这些内容,电信运营商与SP和CP进行利润分成,这时就出现了很多情况,例如有很多SP和CP通过一些如自消费、套餐包重复定制等不当违规手段来提高自己的业务量,最终结算时他就可以从电信运营商那里分配到更多不合理的分成,甚至会导致电信运营商在业务上收入减少。对于电信运营商来说,怎么去规避这些欺诈行为,怎么去控制例如在短时间里他用一些套餐卡不断反复去下载他自己上传的内容,这时候电信运营商就采用CEP这样的技术。像我们给电信运营商的方案里提供了定制服务,例如在他的业务平台上,我把业务平台上的数据通过数据流留到我们的CEP引擎里,然后在CEP引擎里做了各种各样的时间窗口,例如这上面有一秒钟的窗口,有1小时的窗口,有12小时的窗口,然后根据这些窗口来定义各种不同的欺诈规则,一秒钟的时间窗口是例如说他在同一秒时间里连续下载了多少次,或是在一小时里通过不同的IP或通过不同的平台下载,或是去点击内容,我根据不同的时间窗口去制订ABCD这样各种各样的规则,然后通过这个业务平台产生的数据流在CEP里面实时捕获这些率先违规的号码,然后把这些率先违规的号码作为CEP的输出数据流。我把这个输出的数据流回馈到业务平台去,执行相应反欺诈业务操作,可以停号,或暂停业务等等。通过统计我们发现,在这些业务号码里,有1.3%的号码满足了违规的规则,但是他却产生了11.17%违规业务量,所以这一部分就是电信运营商一个很大的风险,通过CEP我们可以实时的发现这些违规行为。而且在第一次发现违规动作时可以立即进行一些操作,从而把损失降到最低。这就是电信行业中一个典型应用,当然在银行信用卡或者其他一些行业里,都有相类似的应用场景。

下面再说另一个场景,跟现在的一些热点也有关,我前些天在微博上也写了一个基于实时分析的应用,大家都知道微博现在很流行,其实微博上很开放,所有人都可以说任何话。那么作为一个企业,怎样去关注这个媒体上是怎么评价你的,尤其是微博这种媒体它的流动性和随意性非常高,你怎样实时发现一条微博消息可能会对你产生一些负面影响或是正面影响,怎么统计,怎么了解,哪些负面消息得到了什么样速度的传播,实际上我相信现在很多企业都有类似需求。我看到这样一篇文章,大家认为这个实时内容搜索市场规模以后会接近109亿美金,这是相当大的一个市场,你可以想象一下,什么样的技术能够帮助你做到实时内容搜索,就是说当一个人发表了对某个企业正面或负面的消息或评论时,如何实时捕获到的这个规则,如何实时捕获内容,然后进行一些怎样的反应操作,我觉得这对很多企业来说都是一个挑战。我认为在这个领域里,CEP这样的技术会得到充分的发挥与发展,包括像国内外现在有很多垃圾短信的过滤,或是扫黄打非等这些内容地实时过滤,我觉得都属于这个领域范畴。所以可以看到CEP在各行各业的应用是非常广泛的。

   

5. 下面挑选一些网友提问回答一下。

有网友问到关于CEP涉及大时间跨度,或者大数据量,或者是历史数据等等这些方面的问题,这个答案其实是这样的。从前几张图可以看到,我们把数据库或数据仓库比喻成水库,水库涉及的数据量也是很大的,它必须放在磁盘里运行。而 CEP是基于内存的,它可以达到很高的速度,但是内存容量有限,现在我们很少见到一台服务器里有TB级内存存储,所以基于内存的技术内存使用量也就是GB级的,最多到几十个G或几百个G。的确,对于几十个G或几百个G的容量你无法像数据仓库那样涉及到过去N年的一些数据。但是我们可以做什么?

比如有些用户提到内存数据持久化的问题,可以把通过CEP出来的数据流到数据库或数据仓库里,但是真正内存分析必须是基于内存实时分析。但我可以把历史数据汇总,例如把过去每个月的平均值或总值做汇总,把这个汇总值拿到CEP中使用。当然CEP作为整个数据流的一项技术,它其实和数据库与数据仓库是有各种各样接口的,例如像Sybase CEP和数据库、文件、数据流都有一些标准接口,通过JMS、MQ、TCP/IP等都可以访问一些数据库里的数据。有了这些机制,我们就可以把数据流和数据库在一个容易整合的平台下配合使用,当接入数据库海量数据的时候,在某种程度上CEP的性能会受到一些影响。因为毕竟CEP无法在内存里存这么大量的数据,所以这是平衡问题,看应用怎么用,有没有办法把数据库中的数据通过某种方式放到内存或CEP里来。

   

6. 关于CEP技术对硬件设备的要求是怎样的?

卢东明:其实CEP的效率由于它把数据流过了以后就不存了,所以实际上它对整个硬件要求不高,因为它不像数据库要背着一个几百万甚至几千万上亿条数据包袱,它与时间窗口大小有关,例如一个15分钟窗口里的数据量可能就是几十万或几百万条数据,即使是金融资本市场的应用,这样放在内存里是完全没有问题的。有的窗口设计得小,数据量就小,在硬件成本上不高。我们内部做过一些Demo,把资本市场数据放到我们笔记本上测试,可以看到,即使在一个双核的笔记本上,运行一些算法交易应用时CPU使用量也只有3%、5%这样个位数,内存使用量只有几兆,所以我们可以看到,这项技术在整个硬件成本上与过去传统硬件技术或软件技术对硬件的要求相比,至少差一两个数量级,也就是说方法论的改变带给人们眼前一亮的效果,要想实现实时交易或实时算法交易应用,我甚至不需要很大的服务器。当然,随着算法增多,可能对CPU的使用会增加,但是我们目前看到了这个对硬件的要求,相对来说还是非常合理的。 开云:有朋友提到像网游行业也可以用到,其实在互联网行业,不管是电子商务还是门户网站,或是网游行业,都面临着各种网络监测或网络入侵,这些都希望能够实时捕获,实时被屏蔽,CEP在这些场合都有非常好的应用场景。

分布式,这个问题我觉得提得很好。Sybase CEP系统是怎么实现分布式的?刚才我们降到一个概念,CEP技术实际是基于数据流的,就像一个水管的概念。水管具有一个非常优秀的特性就是可以并行也可以串行。在数据流很大的情况下,一个水管不能够满足整个数据流吞吐量要求的时候,我可以用多个水管并行来处理这些数据,例如我把数据流进行某种有机分类,A打头的放一个水管,B打头的放一个水管,或按时间周期,或按某些股票代码,或按某些字段的特征,进行有机分布的时候,我可以把它做成几个并行管道,这是一种并行方式。串行方式是,把各种操作通过串行方式将一个复杂逻辑通过CEP引擎串行有效连接起来,在第一个管道做预处理,然后根据某种输出结果再把数据分配到另外两个CEP引擎里做更深入的处理。其实CEP是非常优秀的,刚才开总也讲到了,在金融行业资本市场里对CEP要求都很高,要求能够做到容错,能够做到集群,这些所有企业级CEP功能在Sybase CEP产品里都能够很好实现,在Sybase CEP里我们可以做到集群、容错、高可用性,这项技术现在已经相当成熟了。

我来回答一下CEP技术的优点吧。我举个实际的应用案例,当我们在技术选型时为什么会选择CEP技术。东南融通早期业务场景我们也是采用常规的BI技术或手工编程技术,那为什么选择CEP技术呢?使用CEP实际上我们有一些新需求。

例如举个股指期货套利的例子,如果大家对资本市场有所了解就知道,股指期货套利会分几个步骤:第一步建立自己的投资组合;第二步监控套利机会;第三步当套利机会消失时进行相应平仓;第四,无论是套利机会还是平仓,都需要快速交易;第五,要实时分控。

其实从股指期货套利工具在资本市场开通后,我们会发现早期由于市场无效性会出现大量套利的机会,但套利机会时间窗口非常短,所以如果要实现股指期货套利,究竟需要怎样的能力呢?我们大概分析总结了可能需要的五个方面的能力。第一个方面的能力就是处理复杂场景,毫无疑问,无论是套利机会的监控还是平仓机会的监控,都会涉及到大量数据模型,例如无风险边界如何划分、机会成本如何计算等,这都需要对当前行情数据或对历史数据进行复杂分析,这是第一个方面的能力要求。

第二个方面就是高性能计算能力,因为刚才提到,这种套利机会可能就在几秒几十毫秒甚至微秒级别就会消失,如何在短时间内捕获时间窗口,这个能力要求是非常高的。第三个方面是对历史数据重演,我们知道,像这种套利机会背后支撑的是一系列模型,这系列模型要想在市场上发挥作用必须要经过训练,所谓训练就是要对所有模型进行测试,对数据进行测试,而不仅是简单的数据库的数据,因为数据库的数据是静态数据,我们要把它尽可能模拟成资本市场的数据,也就是逐笔逐笔的数据,所以我们必须要把历史交易按资本市场方式进行流的处理。第五个就是股指期货套利在市场上需要长期博弈,所以我们需要快速响应模式开发,甚至需要模型优化,我们需要一个环境或平台能够快速开发和部署。

综合这五个方面能力,我们来看现有工具有没有满足,我们看传统的BI工具很难满足,如果自己变成可能以上五点都能满足,但自己编程你会发现,一方面编程压力特别大,第二对编程总技术要求特别高,第三编程的效果,稳定性包括新能、分布式这些要求都很难达到。所以基于这五个能力要求,我们比较了国内外的一些开发技术,综合看来,我们发现CEP在这些方面表现突出,非常契合我们的应用场景。 我们觉得Sybase CEP工具在这方面会发挥比较大的优势,除了CEP本身优势之外,还有模型开发工作,包括应用开发,还有很多例如行情系统、下单系统这些多系统的连接工作,还有证券系统内系统集成的工作,这些工作都是基于CEP平台给我们客户带来价值。所以我们觉得能够和Sybase在这方面合作,在产品选型上具有较大优势。

卢东明:CEP和内存数据库间的差别。首先说他们的相似性,他们都是基于内存完全不写盘。因为它完全不写盘,你可以想象,当它向CEP流出数据,或内存数据库里的数据,我们都需要做持久化处理,这个持久化过程最终还是要通过写盘来操作,但是它们基于内存的特性是一样的。CEP和内存数据库最大的区别是什么呢?数据库是基于表的结构,然后通过数据库的一些理念比如SQL查询语句,从内存或磁盘上通过SQL语句去调优、索引、查询,CEP不是,CEP是随着数据流动,进入到C程序,C程序可能制定了各种各样的规则,刚才讲到CEP里有一个类SQL的语言,为什么说是类SQL而不是SQL?是因为它的语法结构。为了方便传统数据库开发者开发,它的语言写得非常像SQL语言,我们知道SQL语言是结构化查询语言,CEP使用的语言类似于数据库语言,但它在内存里的处理效果与数据库语言处理效果完全不一样,它是通过数据来触发查询罗毅的,数据流通过查询工具后会自动运算产生输出流,这是一个差别。

另外,从开发角度看,数据如何采集、发布、存储和处理。在CEP里有个重要概念,我们称之为Adapter适配器,即如果把CEP当做一个运算引擎,那么在左方接入输入数据和右方输出数据的时候都是通过适配器来实现,可以把它想象成水管里有一些螺丝扣来把水流的上游和下游连接起来。这些适配器一定要非常灵活。刚才我也提到,像Sybase Aleri Streaming Platform里会自动去接MQ数据流,它可以接JMS、文件、数据库、TCP/IP、HTTP等,它可以通过各种方式去连接上游的数据流。下游等它计算出结果,它希望也是用数据流的方式送到下游应用去,它在中间不保存,前后都是通过类似适配器的方式留给下游应用,那么我们可以想象,这个机制在整个数据流动过程中对时间的损耗是非常小的。

开云:我再回答一个问题,刚才我看到有网友问基于部署算法交易在CEP是怎样的部署方式,或者说这类产品大概是什么形态。那现在东南融通其实已经开发出来一套基于CEP的一套算法交易系统和程序化交易的系统,或者说是一些产品,我们在开发算法交易产品时,我们会把产品大概分几个层次。第一个层次是技术平台,毫无疑问我们选择地是Sybase技术引擎。第二个层次是我们一些技术应用部门,包括开发策略、部署策略、监控策略,还有一些函数库分析、指标分析、适配器管理等,这属于基础应用功能开发。第三个层次是一些业务功能,如果就算法交易这个领域来说会有流动性预测、交易成本分析、定单切割、绩效评估和盘后分析。第四个层次是算法交易它涉及到一些金融工程模型。我们觉得以上这四个层次能完整地整合在一起,要想形成完整的产品,如果说CEP是一辆车,刚才卢总用车来比喻,我觉得CEP更像车的发动机,在发动机之外我们需要轮子,需要方向盘,我觉得模型可能更像方向盘,当然这个引擎可以做一些业务方向,你可以用这个引起来做股指期货套利,也可以做实时分控,或实时P&R分析等。另外我们需要轮子,就是一些业务应用功能,像成本分析功能、流动性预测功能、定单切割功能等,这样轮子、方向盘、发动机,有核心发动机的配合,我觉得就能装一个完美的汽车。

卢东明:有网友提到零售业有没有使用CEP来做这种关联分析,或者交叉销售。我可以坦然说,关于家乐福或沃尔玛是不是用CEP这样的技术我是不知道的,但我知道在国内我们有一些合作伙伴在和我们做基于CEP,基于后台海量数据分析,对零售业做一些交叉销售或实时交叉销售,例如我掌握了某些客户过去一段时间在我这里的购买记录,我知道他以前买过些什么,他喜欢什么东西,他买服装也好,买各种用品也好,他的尺码、他的颜色喜好、季节喜好等,或是风格喜好我都知道,那么我可以结合他这次购买的东西和历史数据,实时进行一些营销,包括我们库里有什么促销信息或促销货品。我可以针对这个场景,发现他符合我们某一类人群,CEP里会事先定义好这类人群类型。当我们实时发现他符合我们某类人群时,我们就可以把事先准备好的一些交叉销售货品向他推荐,这个就好像收款员在收款时,POS机上会自动弹出一些推荐话语,让收款员问,“喂,职位妈妈你是不是还需要给小孩买点尿布,或是买点小孩的衣服,你上次买的东西快用完了,应该可以再买下一批了”,等等这些都是可以做的,实际上在国内我们是有一些合作伙伴在跟我们做这样的事情。

CEP架构是一个水管型。水管与水管直接是不会有数据丢失的,从前面的处理可以流到下一个处理,大家可能会被我们要处理的数据量吓到,但对CEP来说,把时间窗口定义好的情况下,数据量是非常可控的,它的高效率也跟控制机制有关,我可以在大量数据里通过CEP筛选过滤,可以只对其中某些数据敏感,这一批处理完流到下一批处理去,或者像刚才我说过的可以并行做,或者并行与串行混合。既然是有规则,有依赖性,有些流程要依赖于前面的数据流到来才可以产生,那么在后面流程的编写中,就可以把前面流程出来的结果当成你的输入流,即前面流程的输出流可以做为后面流程的输入流,在后面流程处理过程中会去等待前面过程数据流的到来,这一点不用大家去过滤,我相信这个体系架构是非常健全和完整的。

切入数据流是否会影响业务系统?CEP有个特点是侵犯性非常小,即把数据流接入可以看到数据流本身就可以并行流,可以在完全不影响业务系统的情况下在旁边复制一套流,例如在TCP/IP上,我可以去监听端口号,端口号上所有的数据流我都会接收到。就像收音机发出的无线电波,你收到了并不说明我也收到了,这样就会增加你的负担,CEP的优点就体现在这个地方。

Sybase CEP和竞争友商的异同。坦率来说,我并不是对每个CEP产品都了解得很细致。但是,Sybase CEP在市场上占有的是一个CEP平台,有的友商提供CEP产品是基于某个行业应用,或是基于某种典型应用场景的应用,但是Sybase在欧美市场还有像StreamBase这样的公司提供的是什么?CEP是一个开发平台和运行平台,CEP并不提供一个具体功能,但提供了一个通用性开发平台。虽然刚才我们举的例子里提到了资本市场或电信市场,但其实Sybase CEP平台并不是资本市场上的直接应用,用Sybase CEP平台你可以开发你自己行业里的一些典型符合数据流分析、数据流处理的应用,它是一个非常优秀的平台。从刚才我们讲的STAC这个测试报告也可以看出,这样一个每秒钟处理30万米消息的处理平台,它的性能是非常优秀的。刚才也提到一些文档,在这次活动之后,我们会在我们的网站或者在新浪微群分享给大家,我们在新浪有个新浪微群,是关于CEP的一个新浪微群,也希望大家在微群上关于我们的一些产品,以及我们发布的一些消息。谢谢大家。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT