1.背景

最近在接触实时大数据框架Storm,要求延时在秒级,需求包括用户转账实时APP和短信通知,新股破板通知等;数据规模在每天百万级,高峰期每秒1000。

2.架构设计

2.1 分块

该系统主要包括三部分:数据采集模块,数据加工模块,数据推送模块。
数据采集模块通过接收对应Topic的Kafka消息来实现,需要根据数据量设置分区个数,数据保留周期,数据发送准确级别(不重发,漏发);
数据加工模块通过Storm处理,从Redis获取一些常用信息,比如客户信息,股票信息,持仓信息等,加工成流水数据,将流水数据发到Kafka;
数据推送模块包括推送系统接收Kafka消息,并调用APP渠道或短信渠道接口进行数据推送。

3.问题

a.数据源延迟问题
数据高峰时期,由于数据源一般来自数据库bin-log日志,读取线程数与读取速度等因素都可能导致数据源延迟。
b.topic分区个数问题
分区个数决定了同一组消费者的最大个数。
c.Storm并发度设置
Spout并发度,bolt并发度
d.推送系统消费者个数设置
Kafka消费者线程数,注意多渠道划分导致总线程数远远超过生产机器的CPU总核数,可能出现部分线程阻塞情况。
e.渠道发送接口调用
http接口orRPC接口,同步或异步调用,批量发送大小设置

4.瓶颈

实时消息推送出现较长时间延迟时,说明系统出现瓶颈,此时应该查看生产系统各部分的吞吐情况,包括数据源延迟,Kafka消费能力,Storm处理能力,推送系统能力等

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐