双层nginx+lua(OpenResty) + kafka + storm 发现 突发热点商品

在 分发层 用 lua 的 kafka 工具包 , 把商品数据传输到 kafka 中, 

然后 storm 的 kafkaSpout 对 kafka 数据进行消费 并发射到 HotProductBolt中

HotProductBolt 对 kafka message进行 解析 ,发射 productId 到  ProductCountBolt 中

ProductCountBolt 利用 LRUMap 对 productId 出现的次数进行统计,选出 95% productId次数的 平均值,然后  同一时刻,productId的次数,超过

95% productId的平均值的 10倍,可认为 是突发热点商品, 将这些商品 根据  调用 nginx+lua 提供的接口 

  在ProductCountBolt 调用 分发层OpenResty 接口写 productId 到 其中的 share内存中,如果发现有 这些商品 就进行 随机负载,而不是 hash负载均衡 

在ProductCountBolt 调用 业务层OpenResty 接口写 productId 对应的完整商品数据到 share 内存,这样就能在 业务层的 nginx 内存中获取到商品数据

同时还需要把 上一次的热点数据记录下来,下一次统计出来热点数据的时候,进行 diff操作  把,热点数据从 分发层OpenResty 业务层OpenResty 移除

你可能感兴趣的:(双层nginx+lua(OpenResty) + kafka + storm 发现 突发热点商品)