博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
热点数据降级详解(storm+nginx+lua)
阅读量:4291 次
发布时间:2019-05-27

本文共 747 字,大约阅读时间需要 2 分钟。

对于热点数据,瞬间大量流量涌入,通过转发层nginx可能会流向同一个应用层nginx,因此可能导致崩溃。需要对这些热点数据进行降级处理,将流量负载均衡到所有的应用层nginx上

  • 用storm实时统计处瞬间称为热点的数据
    基于之前所描述,我们会将所有相关的流量请求都分上报至kafka从而通过storm来统计保存至LRUMap,接下来可以比较高频率的(秒级)去遍历这些LRUMap,将其中的访问次数进行排序,统计处靠后的95%的商品访问次数的平均值,然后从往前开始遍历去找有没有瞬间出现的热点数据,我们可以定义靠前的数据超过95%平均值多少倍的阀值就认定为热点数据,然后继续遍历直至小于平均值多少倍的一个安全值就brean这个循环。
  • 将storm统计处认定为热点的数据上报到流量分发层nginx
    通过http将统计出的热点数据发送至流量分发层nginx上,通过lua脚本去处理这个请求,并将商品列表放至本地缓存中,同时storm会将热点数据对应的完整缓存发送至所有的应用层nginx服务器上去,并放至本地缓存中
  • 流量分发层nginx的分发降级策略
    对于流量分发nginx,每次访问一个商品详情页的时候,如果发现它是热点,那么立即做流量分发策略的降。可以通过hash策略,针对同一个productId的访问都同一台应用nginx服务器上的这种情况降级成对这个热点商品,流量分发采取随机负载均衡发送到所有的后端应用nginx服务器上去,从而避免说大量的流量全部集中到一台机器
  • storm保存热点商品id对应的list
    storm每次统计热点的数据都需要基于上一次的统计结果,对于不是热点数据的商品发送http请求值流量分发的nginx上去,取消掉之前进行的降级策略处理,并从该nginx本地缓存中删除

转载地址:http://yhrgi.baihongyu.com/

你可能感兴趣的文章
php常用代码片段
查看>>
Git 分支开发规范
查看>>
UMLet使用教程
查看>>
UML类图详解
查看>>
SSH与SSM的组成及其区别
查看>>
阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了!
查看>>
M0、M1、M2、M3、M4
查看>>
实际项目中如何使用Git做分支管理
查看>>
Git分支管理规范
查看>>
从 0 到 100——知乎架构变迁史
查看>>
Linux环境下ElasticSearch单实例以及集群搭建
查看>>
消息通知系统模型设计
查看>>
消息系统的设计
查看>>
SpringCloud架构
查看>>
技术架构图-Jenkins docker Kubernetes持续集成(CI)持续部署(CD)
查看>>
大数据应用技术图
查看>>
李智慧 - 架构师训练营总览
查看>>
李智慧 - 架构师训练营 第一周
查看>>
李智慧 - 架构师训练营 第二周
查看>>
李智慧 - 架构师训练营 第三周
查看>>