论文部分内容阅读
目前电子商城应用中出现了越来越多的商品秒杀活动,如:小米每周二12点手机秒杀、淘宝双十一秒杀和京东618商品秒杀等,几乎每个电商网站都存在着商品秒杀活动。商品秒杀系统如此常见,同时也面临着各种问题:数据隔离、高并发请求、单账号和多账号多次请求、数据一致性、实时热点发现等等。商品秒杀系统一般会给热点数据部署单独的Cache集群、单独使用更高带宽的服务器,从而将热点数据与普通数据进行隔离,目的是为了不让1%的热点数据影响99%的普通数据。尽管如此,仍然可能从99%的普通数据中出现实时热点数据,由于系统无法提前知道哪些普通数据可能会成为实时热点数据,因此也就无法提前进行保护。因此需要根据系统数据进行实时分析,在尽可能短的时间内发现实时产生的热点商品数据,随后立即做出相应调整,才能有效保证系统的高可用。本文主要解决秒杀场景下实时热点商品数据发现问题,不涉及热点发现后的系统调整问题。由于热点数据的产生都是用户行为导致的,比如购买、浏览、分享、搜索等,所以本文将针对秒杀系统中的用户行为日志进行实时分析,主要进行了如下工作:1.介绍系统使用的相关技术。使用Flume框架进行分布式日志采集;使用Kafka作为日志消息队列,防止日志数据采集过快而计算模块处理数据速度过慢导致数据丢失;使用Storm进行实时数据处理,保证数据分析的实时性;使用MySQL数据库对数据进行持久化存储;使用Redis内存数据库进行数据快速存取。2.设计基于多维排序的热点商品排序算法。多维排序设计原理通过结合多种属性排序和属性权重得到综合排序。系统可以根据单个用户行为属性对热点商品数据进行排序,但是单属性的排序结果综合性性效果差,有大量的偶然性。本文通过比较普通场景和秒杀场景下各属性的增长情况,来确定每个行为属性的权重,然后结合商品在单个属性排序中的排序情况得到该商品的综合评分,最后对所有商品评分进行综合排序。3.设计并实现基于Storm的实时热点商品分析系统。系统整合了Flume、Kafka、Storm、MySQL和Redis技术,能有效监听日志文件并及时读取日志数据;将排序算法逻辑写入Storm的数据处理中,能很快的通过对日志数据进行分析得到需要的实时热点数据;将数据存储在MySQL中进行持久化,能很好的用于后续海量数据的离线处理。