在互联网或者电商场景里面,统计实时数据的场景还是很常见的。比如,在每天某些时段或者特殊的节日会统计订单商品的销量,通过这些数据可以让运营人员作决策。这种场景下就有几个问题需要提前考虑:
实时数据如何获取;
数据获取后需要快速计算;
有些时间段的数据量是庞大的,那么需要有地方来缓存结果,并且缓存的结果能够快速提取作展现。
因此,采用的架构是订单系统+kafka+storm集群+redis集群的方案来实现。
简单分解下就是,通过订单系统发送订单到kafka集群,然后通过storm消费实时数据并且计算订单的数量和金额,接着将计算的结果缓存至redis中。
具体的实现如下:
通过spout获取外部数据源,这里我定义了一个主类用于storm和kafka集群连接;
2.对获取的订单进行解析,生成一个对象,这里定义了一个orderinfo的javabean;
3.将javabean里面计算的结果缓存至redis,核心代码如下;
基本工程已经调试完毕,来看看实际效果,启动storm和kafka集群,redis服务。
在redis中,已经缓存商品实时变化的数据结果。
领取专属 10元无门槛券
私享最新 技术干货