Pulsar:来自eBay的开源实时分析平台

n7w77 6年前

原文  http://www.infoq.com/cn/news/2015/03/pulsar-ebay-open-source


Pulsar 是一个来自eBay的高扩展性、高可用性、基于事件驱动的开源实时分析平台和流处理框架,它能够实时收集和处理用户行为和业务事件。Pulsar使用一种 类似SQL的事件处理语言并通过对数据进行加工(如聚合、补充、变异和过滤等)以实现流的自定义创建。Pulsar具有实时Session化、多维度量聚 合等功能,并具有每秒百万级流量处理能力和基于标准的分布式和跨越多个数据中心云部署架构等特征。

作为全球性的商务平台和支付行业领先者,eBay拥有海量的用户行为数据。过去,eBay使用面向批处理的数据平台(如Hadoop)对用户行为进行分析 以提供良好的用户体验。近来,eBay商务平台出现了新的需求和使用场景,如实时生成报表和仪表盘、业务活动监控、个性化设置、市场营销和广告、不良行为 监测等。至此,批量的大数据处理平台已不能满足业务对实时性的要求。于是,eBay研发团队基于Pulsar CEP( Complex Event Processing即复杂事件处理 )框架并实现了Pulsar实时分析数据管道,从而开发出了Pulsar。eBay的CEP框架提供了一个基于Java的CEP框架和用来在云环境中构 建、部署和管理CEP应用的工具。Pulsar实时分析数据管道由一些松耦合的阶段组成,从而提供了一个高可靠性和高扩展性的扩展模型。实时分析数据管道 处理过程包括:补充、过滤、变异、聚合以及状态处理。

Pulsar的主要组件包括:

  • 收集组件(Collector):具有Rest风格的事件收集API;
  • Session化组件(Sessionizer):事件Session化、维护Session状态和生成Session开始和结束的标示事件,该组件还包括插件式的接口,该接口可用来集成第三其他存储系统从而实现Session的持久化;
  • 分发组件(Distributor):对数据进行过滤和变异操作以满足不同的消费者;负责事件的路由转发;
  • 度量计算组件(Metric Calculator):通过多维度进行计算并将计算结果持久化;
  • 回放组件(Replay): 为了避免数据的丢失,在其它阶段重传发送失败或未处理的事件;
  • 配置组件(ConfigApp): 为Pulsar实时分析数据管道配置和提供处理逻辑。

Pulsar的系统架构如下图所示:

Pulsar:来自eBay的开源实时分析平台

从Pulsar的官网得知,Pulsar具有以下主要特征:

  • 高可扩展性:Pulsar能够跨集群节点对事件处理进行动态分区,并能够扩展为每秒处理数百万事件;此外,Pulsar能够集成Druid或Cassandra等存储系统;
  • 高可用性:Pulsar具有基于标准的分布式、跨多个数据中心云部署架构,所以在软件更新、流处理规则和拓扑结构改变过程中,无需停止服务;
  • 富有灵活性:类SQL的语言和注解能够用来定义流处理规则,包括声明式的管道拼接以做到在运行时能够自动适应动态拓扑改变;
  • 实时分析:Pulsar能够基于时间窗口实现多维度聚合和通过对数据进行加工处理(如补充、变异和过滤等)并自定义流的创建;
  • Session化:Pulsar的实时逻辑能够将用户事件分组到Session中,还能够事件Session化、维护Session状态和持久化Session等;
  • 高精确度:达到99.9%的数据精确度;
  • 支持云端部署:在跨数据中心的情况下,Pulsar通过Docker镜像能够将节点分布到标准的云计算基础架构环境中。

Pulsar CEP的处理逻辑能够部署在跨数据中心的许多节点(即CEP单元)上,每个节点都能够使用输入通道、输出通道以及处理逻辑进行配置,事件通常基于一个 Key(如用户id)被分配到对应的节点上处理。在集群中扩展节点时,Pulsar借助Zookeeper实现了自动检测新的单元、重新平衡事件处理以及 对故障节点的处理。Pulsar的部署架构如下图所示:

Pulsar:来自eBay的开源实时分析平台

Pulsar已经在eBay生成环境中用来对用户行为事件进行分析。近日,eBay还宣布将Pulsar基于 GPLv2协议 开源,代码托管在 GitHub ,且Pulsar开放团队仍继续以开放的方式开发Pulsar。更多关于Pulsar信息,请读者阅读eBay官方提供的一篇介绍Pulsar的 文章 、Pulsar的 FAQ 内容以及GitHub提供的 Wiki页面入门指南