作者: 汪兴朗 汪 明明 王巧玲
eBay 作为全球性的商务平台和支付行业领先者 , 拥有海量的用户行为数据。基于现有的 hadoop 大数据处理,已经不能够满足业务上对实时性的需求。基于 eBay 过去的大数据处理的经验和对最新技术的运用, eBay 探索出一个对海量的数据流进行实时的收集,处理,分发和分析的平台。并于 2015 年 2 月底开源此平台 : Pulsar.
Pulsar作为一个复杂事件处理平台,具有快速,准确,灵活的特性,保证点到点的低延时和高可靠,从而很好得满足了的eBay秒级实时数据分析的需求。同时每秒百万级流量处理能力,给客户带来更好的个性化体验,帮助客户监控实时业务信息并定制实时营销策路,及时监测网络欺诈行为并减少机器人干预。并且Pulsar是基于标准的分布式云架构部署并跨越多个数据中心,从而保证了在系统升级和拓扑更新时没有集群停机时间。 [/code] ```code
Pulsar平台提供了一个完整的实时大数据分析的解决方案:
![](https://img-blog.csdn.net/20150302132759537?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZWJheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) [/code] [/code] ```code
该平台能够实时收集Event Stream,并且对Event进行实时的Enrichment和Sessionization, 推送到不同的实时应用,同时能够实时的进行统计和分析,对业务提供 Key insights. [/code] ```code
在Pulsar平台内部,它把Event Stream看成一种类数据库的表,在上面通过应用申明式的4GL来定义Business logic. 并且同时开源了作为支撑Pulsar 的一个全新的大数据流处理框架: Pulsar Jetstream. [/code] ```code
Pulsar.Stream是一个通用的全新的大数据流的处理框架。他实现了一个开放的,自动发现的Topology, 不同的应用可以分布在不同的Data center, 通过网络进行自动的发现并且建立连接,数据主动从Producer推送到Subscriber. 在每个应用内部,通过Pipeline的方式连接各个业务模块,并且支持用4GL的EPL来定义业务逻辑。整个的topology是开放的并且能够动态扩展,相应的EPL也能够进行动态的更新且没有服务中断。 [/code] ```code
典型的部署结构 [/code] [/code] ```code ![](https://img-blog.csdn.net/20150302132820446?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZWJheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) [/code] ```code EPL Sample: [/code] ** Event filtering and routing ** ```code insert into SUBSTREAM select D1, D2, D3, D4 [/code] ```code from RAWSTREAM where D1 = 2045573 or D2 = 2047936 or D3 = 2051457 or D4 = 2053742; // filtering [/code] ```code @PublishOn(topics=“TOPIC1”) // publish sub stream at TOPIC1 [/code] ```code @OutputTo(“OutboundMessageChannel”) [/code] ```code @ClusterAffinityTag(column = D1); // partition key based on column D1 [/code] ```code select * FROM SUBSTREAM; [/code] ** Aggregate computation ** ```code // create 10-second time window context [/code] ```code create context MCContext start @now end pattern [timer:interval(10)]; [/code] ```code // aggregate event count along dimension D1 and D2 within specified time window [/code] ```code context MCContext insert into AGGREGATE select count(*) as METRIC1, D1, D2 FROM RAWSTREAM group by D1,D2 output snapshot when terminated; [/code] ```code select * from AGGREGATE; [/code] ** TopN computation ** ```code // create 60-second time window context [/code] ```code create context MCContext start @now end pattern [timer:interval(60)]; [/code] ```code // sort to find top 10 event counts along dimensions D1, D2, and D3 [/code] ```code // within specified time window [/code] ```code context MCContext insert into TOPITEMS select count(*) as totalCount, D1, D2, D3 from RawEventStream group by D1, D2, D3 order by count(*) limit 10; [/code] ```code select * from TOPITEMS; [/code] ```code
关于详细的信息,请看
www.ebaytechblog.com/2015/02/23/announcing-pulsar-real-time-analytics-at- scale
相关事件: [/code] 1. Pulsar on QCon Shanghai 2014 – [ http://www.infoq.com/cn/presentations/ebay-user-behavior-data-stream- processing-system ](http://www.infoq.com/cn/presentations/ebay-user-behavior- data-stream-processing-system "http://www.infoq.com/cn/presentations/ebay- user-behavior-data-stream-processing-system") ```code 2. Pulsar on milibo - <http://www.milibo.com/talent/events.aspx?id=34> [/code] ```code
请访问 <http://gopulsar.io> 获取源代码,文档和更详细信息。