在资本市场,仓位改变、市场转换等情况会在瞬时完成,于是,快速响应就成为管理风险与增加利润的关键所在。无论是需要对市场变化及时响应的自动交易应用还是市场庄家应用,抑或是全天都需要掌握不断更新的公司风险状况的风险管理员,归根结底都依赖于对来自各种数据源的、极高速率的、实时的数据进行分析。
而事实上,这种现象绝不仅限于资本市场。除了金融服务业之外,包括' 电信与网络、物流与运输、政府等的许多行业,都面临着与资本市场相同的挑战数据量的增长、数据接收与数据生成速度的提高、不断增长的数据分析的业务压力以及通过实时响应实现利润最大化和降低风险的业务目标。
面对如此复杂的业务环境,复杂事件处理技术(CEP)提供了一种创新的方法,帮助机构从实时的事件数据中获取情报。作为一个应用开发平台,它提供了高级工具来定义事件如何被处理和分析。作为一个事件驱动架构(EDA)引擎,它提供了获取、聚合、关联与分析事件的“大脑”,生成新的高级事件以触发一个响应,同时也生成高级的信息来显示当前的业务状态。它使使用者轻松地定义逻辑以应用到不断到来的事件中,从而完成如下任务:
联合来自多个数据源的数据,生成包含更丰富和复杂信息的数据流;
计算增值信息以进行快速决策;
监测特定状况或模式以做出即时响应;
生成高级信息,如汇总数据、统计、洞察多个独立事件的“大图”或净效应的趋势;
基于输入数据的复杂分析,不断重算关键的操作值;
收集原始数据与结果数据到历史数据库,以进行历史分析或遵循合规性;
Sybase Aleri Streaming平台正是满足机构当前需求的、最完整的企业级复杂事件处理技术。以下将以建立在Sybase Aleri Streaming平台上的事件处理应用为例介绍复杂事件处理的基本概念以及它所带来的好处。
一、复杂事件处理
复杂事件处理与传统数据库查询的相同与不同
我们试图考虑如下情形……
一个自动交易应用,扫描海量的市场数据以辨识交易机会,交易触发器必须在瞬间响应,否则机会就会流失
一个市场庄家应用,必须根据市场变化调整内部或公开的利率,延误就意味着业务损失或利润损失
一个风险管理应用,不断更新整体仓位与风险信息,联合多个系统的数据以提供一个单一的且始终最新的综合视图
实际上,这些仅仅是可以从复杂事件处理技术中获益的部分应用类型。同时,这些应用类型具有共同的特征它们都需要不断地收集、处理、分析实时数据,并在数据迅速到达的情况下毫无延迟地生成结果。
众所周知,传统的数据库是为快速处理单个事务而设计的;如果使用原本不是实时生成有用情报的查询工具来寻找特定条件或获得更高级别的汇总数据的数据分析,那么这就只能成为“离线”才可完成的任务,而这些查询工具就不会适合那些需要实时分析的应用(如交易应用)。而且当它们在其他的领域被数据分析所采用,那么基于“历史”数据的分析这一事实就意味着商业洞察只能是源自事后,在很多情况下,这将会让使用者丧失对分析结果做出快速回应的机会。
而复杂事件处理技术却提供了传统的、由关系型数据库甚至扩展表格所提供的数据分析工具,并且,在实时事件驱动的环境中,它具有“以非常高的速率接近实时地处理不断到来的数据”的能力。
这让我们认为它将传统数据库的某些基本概念颠倒了过来: 一个传统的关系型数据库是先收集并存储数据,然后进行数据分析对数据进行过滤、联合、分组、模式搜索、生成高级汇总数据等等这种分析是离线发生的,不能响应持续到来的事件。而相比较传统的关系数据库而言,一个事件响应器(CEP技术的心脏)却可以通过一组预定义的、连续的查询对持续产生的消息进行处理,从而生成数据流或数据集。这种查询过程被称之为连续查询,是因为数据分析逻辑与在传统数据库查询中所使用的类似。例如:
告诉我哪些事件满足这个条件;
告诉我这类事件(非事件)模式是否发生;
告诉我匹配该条件的当前所有事件;
对符合这些值的事件进行分组并计算每组的均值;
尽管复杂事件处理逻辑与传统数据库查询类似,但其实却不尽相同。事件处理使用的是数据流架构,一旦有消息到达即通过连续查询操作器进行传递,这样结果集就可以被即时更新。在事件处理中,连续查询内部使用的那些函数在设计之初就已经考虑到对吞吐量的最大化与对延迟的最小化这两个重要因素。
通常,任何新技术的出现都会对原有技术造成冲击,而伴随着新技术出现的是那些随后一段时间才被行业所采用的通用术语以及对各个术语的通用的定义,复杂事件处理(CEP)当然也不例外,它的出现同样带来了巨大的革新。
复杂事件处理技术所带来的革新
· 定制化代码的一种替代方式
复杂事件处理技术为建立实时处理事件数据的高性能的企业级应用提供了一种可替代的方式。我们都知道,使用C++或Java编写的定制化应用费用昂贵、耗时过长、通常又不够灵活、加上处理逻辑难以编码并且与数据结构捆绑过紧,从而带来高昂的维护成本。另外,为实时处理查询而设计和编写高效的代码还需要专门的编程技巧。
· 新的概念,新的术语
过去两年,随着复杂事件处理技术的出现,它曾被称为“事件流处理”、“流处理”或简单的“事件处理”。尽管“事件处理”仍然是一个相对合适的术语,而且从技术上看也是最通用的术语,涵盖了所有类型的事件处理,然而“复杂事件处理”这一称谓已经成为被最多行业参与者针对这类技术所使用的标签。
来自斯坦福的David Luckham在他的《事件的力量》一书中将复杂事件处理定义为“一组帮助我们理解和控制事件驱动的信息系统的机制和工具”。这一定义很容易被应用到“事件流处理”上。然而,我们可以扩展该定义,将其范围从“信息系统”扩展到事件驱动的业务进程。
复杂事件处理可满足多种应用需求
不管特定的使用条件如何,所有事件处理应用都会处理如下一种或多种任务:
状况监测: 监控不断到来的事件,监测可预示机会或问题存在的模式—比如一个值得响应或需要被记录的状况。它的范围可以从一个简单的过滤到复杂的规则集,这些复杂的规则集对即将到来的事件进行关联并且筛选那些可能包括遗漏事件的条件集。其结果是产生更高级别的表明状况存在的事件。
数据聚合与分析—连续计算: 数据被关联、分组、聚合、计算,然后被用于生成新的信息,如汇总数据、高级统计或者对关键操作字段的调整。这种类型的CEP包括:
- 不断更新关键绩效指标(KPIs)
- 不断更新估值风险
数据收集: CEP的一个副产品通常是对原始事件数据或(与)高级汇总数据的收集。被收集的数据可以作为处理新近到来的事件的关联情境,也可以被存储在历史数据库中用于离线分析、报表或提供审计线索。
应用集成,智能事件处理: 许多应用建立在事件驱动架构(EDA)之上,但是EDA的基本工具是提供事件数据交换的机制,而不是提供分析事件数据的功能。CEP可以在一个事件驱动架构内提供在其他事件的关联情境中的智能事件分析以及有关各种系统状态的知识,以决定需要生成哪些新的事件或基于某个事件应该采取的行动。
复杂事件处理的实时数据分析功能
当我们在讨论对不断到来的事件数据进行实时分析的能力时,我们实际上是指各种可以单独或联合应用到这些数据并产生高级智能与触发一个响应的功能。这些例子包括:
过滤数据,应用简单或复杂的过滤器检测兴趣条件。这可能包括不同来源的事件的相关性、事件的时间相关性、以及观察与指定模式匹配的事件集。
联合来自多个数据源的数据,包括联合数据流和静态数据的能力,或者联合不同时间产生的数据。基于事件或者元素数量定义事件保留的“窗口”以及在此期间哪些运算将被执行。
分组和聚合数据,生成高级汇总数据和统计。这可能包括趋势(移动平均线),持仓净额/风险等等。
计算新的数据元素: 通过增加新的域,丰富简单的事件数据,这些域基于关联情境、其他来源的数据计算而得。
转换数据格式和结构。这远不只是简单的消息级的转换,而是能够利用将关联情境和参考数据等考虑在内的规则,基于独立或多个事件生成全新的事件。
对低级事件进行分组或仿制生成高级事件
二、SYbase ALERI STREAMING平台
Sybase Aleri Streaming平台是一个高性能的、专为在最苛刻的环境中部署企业级应用而设计的企业级复杂事件处理引擎,该产品代表了复杂事件处理最先进的技术,将性能、多样性与易用性融于一炉,可用于快速实施和部署各种需要对事件数据进行实时分析与响应的应用。
Sybase Aleri Streaming平台拥有极优异的性能
设计之初,Sybase Aleri Streaming平台就是以最小的延迟、最大化吞吐量为最基本的设计目标。例如,在一个2 CPU 的Linux服务器上,Sybase Aleri Streaming平台每秒可以处理超过10万条消息,在某些情况下,每秒可以处理超过100万条消息,而延迟时间即消息到达到进程结束并生成结果之间的时间,通常可控制在一毫秒内到几毫秒之间。
Sybase Aleri Streaming还是针对高可扩展性以及任务关键型应用的基础架构组件而设计的、支持Linux、Solaris、Microsoft Windows(32 Bit) 多线程的64位应用平台。它可以利用多CPU机器的并行处理能力,具有集群功能,并允许应用在多个服务器之间扩展。这种效果实质上就是无限的可扩展能力,即可通过增加额外的CPU与服务器来增加吞吐量。
Sybase Aleri Streaming平台能够满足多样性需求
如前所述,不同的应用有着不同的需求。许多CEP产品仅仅是为了某一类的应用而设计。例如,很多CEP的“规则引擎”仅仅是为状况监测而设计,当然如果全部的需求仅仅是状况监测,那么一切都好,但是这种技术不可能被扩展到其他类型的应用。而Sybase Ale ri Streaming是为满足广泛的事件处理需求而设计的平台,这些需求包括:
监控不断到来的数据流以发现潜在的机会或威胁的情况;
对跨越大时间窗的大数据集的操作;
收集原始与(或)结果数据,用于历史分析、报表或提供审计线索;
为CEP带来多样性的Sybase架构独特之处包括:
可对消息进行如下操作: 插入、更新、删除、Upsert。这使Sybase可以满足这种情况,到来的消息不是代表时间序列中的一个新的数据点,而是代表对之前信息的更新。许多CEP的实施并不能够执行更新和删除—它们将所有的消息都视作时间序列中新的数据点。而现实是许多数据流产生更新、改变和取消。无论是对一个定单的修改、或者对之前发送的数据的修正、这些更新必须被应用到之前接收的数据上,以保持对当前状态的一个准确的视图。
为无状态、内存或基于磁盘的保留提供可调整的状态管理选项,可在单独的流级别上进行应用。这使得数据得以在需要它的流上完整保留,根据定义好的保留规则保留单独的消息。对于那些绝不允许数据丢失的流,在故障之后使用快速的全状态备份功能,这些流可以配置为基于磁盘的保留。Sybase已经开发了一个专有的高性能数据永久保留模型,确保日志数据记录到磁盘,而对吞吐量与延迟的影响最小。
支持动态改变数据模型,允许在运行状态下修改计算和“规则”,而不影响那些不被修改的数据或流的处理。
一个按需查询接口,允许所有被保留的数据集可被外部应用所查询,就像在数据库中的处理一样。ODBC/JDBC接口提供了对现成的查询应用的支持,以及允许为当前数据集生成快照。
内建的安全包括访问控制、认证和加密。
Sybase Aleri Streaming平台可任意选择高级编程环境
使用Sybase Aleri Streaming平台,数据模型(比如事件处理逻辑)可以使用三个高级编程环境的任意一种进行定义。
The Sybase Studio: 一个集成的开发环境,拥有可视化的编辑器以及可执行和测试工具。它基于一个被广泛使用的Eclips框架,提供编写和执行的双重功能。它为建立模型和定义数据流提供了一个可视化的范例。从执行方面看,它为模型测试提供了众多的工具,包括: 记录/回放、数据模拟器、调试器、性能监控器、以及流观察器。
Sybase SQL: 标准ANSI SQL的一个版本,在实时数据处理上有一些微小的扩展,它为那些习惯于传统数据库的人提供了一个熟悉的环境。这是一个完全的文本语言,允许开发者选用适当的文本编辑器。Sybase Studio中包含了一个Sybase SQL 编辑器。
XML: Sybase Studio和Sybase SQL都会生成一个XML格式的数据模型,它可以被事件处理器直接处理。XML元素可由XML编辑器直接编辑或创建,无需使用Studio或SQL。Sybase XSD对用于定义数据模型的元素和属性进行了定义。XML数据模型为用于创建和修改模型的定制化图形用户界面(GUI)、甚至是专门的语言提供了理想的应用基础。
Sybase Aleri Streaming平台的十二大产品特性
修正和更新: 大多数的事件处理器将所有到来的数据视作一个时间序列,将最新的消息附加到历史流后面,Sybase 处理器使用一个更为精巧的模型,在更新或删除发生时也可以将消息应用到流历史中。
数据捕获: 原始或(与)派生数据可以被捕获,并且被传送到一个现成的历史数据库,为未来的分析或审计目标提供一个历史记录。
按需查询: 除了生成流输出,所有的原始数据与派生事件数据均可以基于标准的ODBC和JDBC接口进行查询。对于一个报表工具,它看起来就像一个数据库,视图永远是最新的。
可配置的数据保留: 单个的流可被配置为无状态或数据保留。数据保留规则可基于时间或元素的数量进行定义,而且可以进行扩展以保留大数据集。单个的事件与(或)汇总事件均可被保留。
数据永久保留选项: 当数据因高性能的原因在内存中被处理时,某些或者全部被保留的数据可以被指定为基于磁盘永久保留,以确保关键数据不因系统故障而丢失。一旦系统复原,每个被永久保留的流状态可被完全恢复。Sybase专有的高速日志存储确保了使用基于磁盘的永久保留时对性能的影响最小。
动态的数据模型: 数据模型可在运行状态下进行修改,无需中断正在到来的数据处理进程,也不会对不被改变的流造成影响。
FlexStreams: 可以使用FlexStrems对流操作器进行定制。这些可编程的流操作器使用一个简单的脚本语言,提供了在一个关系型数据模型内实现程序逻辑的功能。
异步和同步消息选项: 尽管多数CEP应用采用了完全异步的操作,然而Sybase意识到仍有某些应用需要保证数据的集成。因此,为输入流提供了同步消息传输选项,使用可调整的字段以平衡数据集成和性能之间的需求。
内建的安全性: 流级别访问控制、认证以及可选的输入输出流加密。集群配置: 支持集群硬件配置包括在多个机器上运行一个单一数据模型的功能,集群管理器可以管理分布式进程。
高可用性选项: 热备份功能提供了自动故障转移,从主服务器转移到一个活动的从服务器。另一种可选方案是启用冷备用配置,自动启动硬件环境中的一个新的服务器。基于磁盘的永久保留选项,在开启状态下,则允许生成一个新的实例,所有的数据集全部被重新实例化。
用户定义的函数: 外部函数库可以作为事件处理的一部分被引用,这意味着你将不仅仅局限于内建函数。
SybaseRT for Microsoft Excel: 这是为Excel而外接的,包含在基本的产品中,提供了将数据从Excel发布到Sybase平台的功能,以及从Sybase平台订阅流输出到Excel内的能力。
Sybase Aleri Streaming平台的系统集成介绍
Sybase Aleri Streaming平台以一个服务器进程的方式运行,它基于套接字(Sockets)接收和发布消息。数据模型在启动时被加载,所有消息均根据该模型进行处理。该模型可以使用动态数据模型工具在运行状态下进行修改。
数据使用Sybase pub/sub API以流方式进入服务器。这些API支持Java、C++和.NET。相同的接口被用于从Sybase 平台订阅输出流(结果)。Pub/sub API可嵌入到应用中,以生成由Sybase平台处理的事件,或者处理由Sybase平台生成的事件,或者两者皆有。这些API也可用来创建适配器。Sybase提供了广泛的预建的适配器,包括TIBCO、IBM MQ、JMS、Reuters、ODBC、JDBC以及其他适配器。新的适配器仍在不断增加中查询Sybase以了解可用的适合你的需求的专门的适配器。适配器也可以按照需要进行定制。
Sybase平台用户定义函数(UDF)接口允许在Sybase数据模型内调用包含外部函数库的函数。UDF API目前支持C++和JAVA。
按需查询接口允许基于已保留在Sybase平台内的数据集进行SQL查询快照。它既支持C++ API,也支持ODBC和JDBC接口。
Sybase服务器的命令和控制基于XML RPC接口。
Sybase Aleri Streaming平台典型的复杂事件处理应用
Sybase Aleri Streaming平台允许快速开发广泛的事件处理应用。以下是一些已经使用复杂事件处理建立的部分应用:
市场数据丰富应用: 从多个数据源选择或联合数据; 监控延迟和质量; 计算增值域; 生成定制数据流。
自动交易或算法交易: 处理大量市场数据,对交易机会进行操作。使用不同的跟踪市场的交易算法执行大量定单;合并来自多个市场的保护其他揭示价(DOB)数据,以全面分析市场深度和压力。Sybase平台可以与一个分笔数据库(Tick Database)共同部署以生成低延迟的包含历史分笔数据的结果。
市场庄家、自动定价: 清洗和验证市场数据,然后应用偏差和分布,联合交易员输入,更新内部或(与)公开的利率。
交易前验证与合规性:检查定单的错误或(与)合规性,不增加延迟
最佳执行,智能化的定单路由: 考虑受保护的定单、客户资料、偏好与地点特征,遵循Reg NMS和MiFID对定单进行路由。为合规性监控与报表捕获和记录数据。
交易后监控和报表: 监测差异,跟踪性能,生成质量统计,当超过可接受的阈值时产生警告。
风险聚合,实时P L: 实时聚合来自多个独立的交易系统、仓位保持系统与风险系统的仓位和风险信息,提供一个实时的聚合视图,以在多个维度上展开分析; 无需改变或替换基本的系统,跨越企业“孤岛”实时进行无侵扰的信息合并。对实时的市场数据进行持续的验证。
数据业务流程: 在一个面向架构的服务器内对数据传播进行智能化管理,根据关联情境和状态定义复杂规则,保持分布式系统的同步。
总结
关键的业务流程与决策越来越依赖于对最新信息的获得以及对不断变化的情况的即时响应和应对,这一点对时刻变化的金融服务领域尤为关键,而速度、数据量、准确性对利润最大化、风险最小化以及对企业和政府监管需求的遵循极为重要。Sybase Aleri Straming平台,这一来自Sybase的高性能复杂事件处理技术,正在为满足当前以及未来的苛刻的数据挑战提供着支持与革新。
【免责声明】本文仅代表作者本人观点,与和讯网无关。和讯网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。