实时处理方案架构-笔记.docx

1、数据接入层

该部分有多种数据收集方式,包括使用消息队列(MetaQ),直接经过网络前端

Socket传输数据,前端业务系统专有数据采集API,对Log问价定时监控。mysql

2、为何选择消息队列?

为何不把数据直接问导入storm中?而是使用消息队列(MetaQ?sql

使用消息队列做为数据中间处理组件的缘由是:数据库

在大批量数据处理时,前端业务数据产生速度可能会很快,而实时处理或者其余处理速度跟不上,会影响整个系统处理性能,引入消息队列以后,咱们能够把数据临时存储在消息队列中,后端处理速度就不会影响前端业务数据的产生,比较专业的术语叫作解除耦合,增长系统扩展性,系统各组件异步运行。后端

为何使用MetaQ

在消息队列选择上,kafka是一个比较通用的,开源时间较长的消息发布订阅系统,而MetaQ是基于kafka开发的,使用咱们比较熟悉的Java开发,而且在此基础上做了必定的改进,如数据可靠及事务处理等。缓存

另外一方面,这是国人开源的东西,各方面的文档比较完整,而且有相关的实例接口。因此使用MetaQ做为消息中间件,开发成本比较低,又有较好的性能。安全

Log文件监控

有时候咱们的数据源是已经保存下来的log文件,那Spout就必须监控网络

Log文件的变化,及时将变化部分的数据提取写入Storm中,这很难作到彻底实时性。数据结构

3、为什么使用storm做为实时处理的核心?

Storm做为开源比较早的一款实时处理系统,其功能比较完善。其failover机制至关给力,不管是woker仍是supervisor,甚至是task,只要挂掉都能自动重启;其性能通过测试仍是至关不错的且目前网络相关资料较多,这就意味着开发代价会小不少;其扩展性很是好,可以横向扩展。架构

Storm目前的短处:

在于nimbus单点,若是nimbus挂掉,整个系统会挂掉,这是Storm须要改进的地方,不过nimbus的系统压力不大,通常状况下也不会出现宕机。

4storm具体应用场景

1)、条件过滤

这是storm最基本的处理方式。对符合条件的数据进行实时过滤,将符合条件的数据保存下来,这种实时查询的业务需求在实际应用中是很常见的。

2)、中间计算

咱们须要改变数据中某一个字段(例如是数值),咱们须要利用一个中间值通过计算(值比较、求和、求平均等等)后改变该值,而后将数据从新输出。

3)、求TopN

相信你们对TopN类的业务需求也是比较熟悉的。

在规定时间窗口内,统计数据出现的TopN,该类处理在购物及电商业务需求中,比较常见。

4)、推荐系统

有时候在实时处理时会从mysqlhadoop中获取数据库中的信息,例如在电影推荐系统中,传入数据为用户当前点播电影信息,从数据库中获取的是该用户以前的一些点播电影信息统计,例如点播最多的电影类型、最近点播的电影类型,及其社交关系中点播信息,结合本次点击及从数据库中获取的信息,生成一条推荐数据,推荐给该用户。而且该次点击记录将会更新其数据库中的参考信息,这

样就是实现了简单的智能推荐。

5)、分布式RPC

Storm有对RPC进行专门的设计,分布式RPC用于对Storm上大量的函数调用进行并行计算,最后将结果返回给客户端。

6)、批处理

所谓批处理就是数据攒积到必定触发条件,就批量输出,所谓的触发条件相似时间窗口到了,统计数量够了及检测到某种数据传入等等。

7)、热度统计

热度统计实现依赖于TimeCacheMap数据结构,该结构可以在内存中保存近期活跃的对象。咱们可使用它来实现例如论坛中的热帖排行计算等。

5、数据落地层

1)、MetaQ

StormMetaQ是有一条虚线相连的,部分数据在通过实时处理以后须要写入MetaQ之中,由于后端业务系统须要从MetaQ中获取数据。

这严格来讲不算是数据落地,由于数据没有实实在在写入磁盘中持久化。

2)、MySql

此处列出Mysql表明传统数据库与Storm的接口差很少都类似。通常状况下,数据量不是很是大的状况下可使用Mysql做为数据落地的存储对象。

Mysql对数据后续处理也是比较方便的,且网络上对Mysql的操做也是比较多的,在开发上代价比较小,适合中小量数据存储。

3)、HDFS

HDFS及基于Hadoop的分布式文件系统。

许多日志分析系统都是基于HDFS搭建出来的,因此开发StormHDFS的数据落地接口将颇有必要。

例如将大批量数据实时处理以后存入Hive中,提供给后端业务系统进行处理,例如日志分析,数据挖掘等等。

4)、Lustre

在某些应用上比较适用。

例如:

Lustre做为数据落地的应用场景是,数据量很大,且处理后目的是做为归档处理。这种情形,Lustre可以为数据提供一个比较大(至关大)的数据目录,用于数据归档保存。Lustre的架构能够采用Lustre+drbd+heartbeat的架构,这样既能为整个系统提供一个超大容量的归档统一命名目录空间,又能保证数据的安全(双机热备)。

6、元数据管理器

元数据管理器的设计目的是,整个系统须要一个统一协调的组件,指导前端业务系统的数据写入,通知实时处理部分数据类型及其余数据描述,及指导数据如何落地。元数据管理器贯通整个系统,是比较重要的组成部分。

1)、元数据设计

元数据设计可使用MySQL存储元数据信息,结合缓存机制开源软件设计而成。

7、关于StormHadoop对比

Storm关注的是数据屡次处理一次写入,而hadoop关注的是数据一次写入,屡次处理使用(查询)。

Storm系统运行起来后是持续不断的,而hadoop每每只是在业务须要时调用数据。二者关注及应用的方向不同。

8Storm的应用前景

就目前来讲,愈来愈多的公司在用storm,像一些推荐系统啊,金融系统啊,在小一些的应用场景也有,例如预警系统,网站统计等等,其在数据处理方面有着自然的优点。

整体来看,在数据量愈来愈大,须要处理挖掘的数据需求愈来愈多的状况下,Storm

仍是有着很好的前景的。

相关文章
相关标签/搜索