实时交互平台流程与技术分析
2016-08-25 11:24
288 查看
最近几个月一直在做基于storm的流式处理,索性整理下所有的知识点与技术知识。
一、数据准备
1、首先,我们需要用户的所有数据,使用MapReduce进行数据处理,生成业务宽表导入hbase与Redis,用于后续实时处理直接从Redis中获取相应数据,减少读写磁盘IO的消耗。
二、消息的接入
1、传入的数据是经过二进制处理的,所以使用jetty轻量级服务对传入的报文进行接入解析,同时部署多个服务,使用nginx进行负载均衡。
2、每个服务同时启动多个线程进行消息的接入,通过blockingQueue进行存储,随后进行报文解析,序列化后发送对应主题的kafka.
三、storm处理
1、使用集成的kafkaspout进行消息的接入代替storm的spout,降低工程复杂度,可直接编写bolt进行业务逻辑处理,随后进行数据的一次性过滤bolt,验证消息的正确性并并封装入对象中。
2、通过消息中的相应主键,从Redis中加载该用户的全量数据,以便后续业务处理(存入hbase是以防redis出现问题进而再查询hbase,同时hbase中的rowkey做了散列,数据均匀分布在每个region中)。
3、加载配置活动规则,这些规则通过前台web系统配置保存,存储于redis中。对多个规则进行遍历匹配,封装成一个大的对象,传入下游推送拓扑。
4、推送拓扑在接收到消息后,从对象中获取封装的消息对象的渠道对象,对其进行遍历发送至不同的渠道。
一、数据准备
1、首先,我们需要用户的所有数据,使用MapReduce进行数据处理,生成业务宽表导入hbase与Redis,用于后续实时处理直接从Redis中获取相应数据,减少读写磁盘IO的消耗。
二、消息的接入
1、传入的数据是经过二进制处理的,所以使用jetty轻量级服务对传入的报文进行接入解析,同时部署多个服务,使用nginx进行负载均衡。
2、每个服务同时启动多个线程进行消息的接入,通过blockingQueue进行存储,随后进行报文解析,序列化后发送对应主题的kafka.
三、storm处理
1、使用集成的kafkaspout进行消息的接入代替storm的spout,降低工程复杂度,可直接编写bolt进行业务逻辑处理,随后进行数据的一次性过滤bolt,验证消息的正确性并并封装入对象中。
2、通过消息中的相应主键,从Redis中加载该用户的全量数据,以便后续业务处理(存入hbase是以防redis出现问题进而再查询hbase,同时hbase中的rowkey做了散列,数据均匀分布在每个region中)。
3、加载配置活动规则,这些规则通过前台web系统配置保存,存储于redis中。对多个规则进行遍历匹配,封装成一个大的对象,传入下游推送拓扑。
4、推送拓扑在接收到消息后,从对象中获取封装的消息对象的渠道对象,对其进行遍历发送至不同的渠道。
相关文章推荐
- Linux 实时技术与典型实现分析
- Linux 实时技术与典型实现分析, 第 1 部分: 介绍
- 安卓平台中国眼实时视频软件之视频源分析
- 安卓平台中国眼实时视频软件之视频源分析
- 数据实时同步或抽取上收的技术分析(社保、电力营销、财政、税务征管、公安警务等地市数据省级大集中应用/异地灾备)
- Android平台上的XML解析技术分析
- Java技术平台中文处理问题分析及解决方案
- Uboot在ARM平台下运行流程分析
- wince6.0系统S5PV210硬件平台:镜像烧写流程分析
- 《易流》电子商务平台经营模式和技术分析
- 智能手机软件平台 Android VS iPhone OS: 技术先进性分析 (3/4)
- BPA业务流程分析平台-炎黄盈动
- 数据实时同步或抽取上收的技术分析
- Linux 实时技术与典型实现分析
- Eclipse 架构分析和应用(Eclipse平台架构技术分析及基于RCP的应用研究)
- Linux 实时技术与典型实现分析, 第 2 部分: Ingo Molnar 的实时补丁
- Maemo Linux手机平台系列分析:1 技术概览
- Linux 实时技术与典型实现分析, 第 2 部分: Ingo Molnar 的实时补丁