因此,将数据放到全国所有的 CDN 节点是不太现实的,失效问题、命中率问题都会面临比较大的挑战 。
更为可行的做法是选择若干 CDN 节点进行静态化改造,节点的选取通常需要满足以下几个条件:
- 临近访问量集中的地区
- 距离主站较远的地区
- 节点与主站间网络质量良好的地区
这样就可以较好解决缓存的失效问题以及命中率问题,是当前比较理想的一种 CDN 化方案 。
部署方式如下图所示:

文章插图
③数据整合
分离出动静态数据之后,前端如何组织数据页就是一个新的问题,主要在于动态数据的加载处理,通常有两种方案:
- ESI 方案:Web 代理服务器上请求动态数据,并将动态数据插入到静态页面中,用户看到页面时已经是一个完整的页面 。这种方式对服务端性能要求高,但用户体验较好 。
- CSI 方案:Web 代理服务器上只返回静态页面,前端单独发起一个异步 JS 请求动态数据 。这种方式对服务端性能友好,但用户体验稍差 。
热点优化热点分为热点操作和热点数据,以下分开进行讨论 。
①热点操作
零点刷新、零点下单、零点添加购物车等都属于热点操作 。热点操作是用户的行为,不好改变,但可以做一些限制保护,比如用户频繁刷新页面时进行提示阻断 。
②热点数据
热点数据的处理分三步走,一是热点识别,二是热点隔离,三是热点优化 。
热点识别:热点数据分为静态热点和动态热点 。
具体如下:
- 静态热点:能够提前预测的热点数据 。大促前夕,可以根据大促的行业特点、活动商家等纬度信息分析出热点商品,或者通过卖家报名的方式提前筛选 。另外,还可以通过技术手段提前预测,例如对买家每天访问的商品进行大数据计算,然后统计出 TOP N 的商品,即可视为热点商品
- 动态热点:无法提前预测的热点数据 。冷热数据往往是随实际业务场景发生交替变化的,尤其是如今直播卖货模式的兴起——带货商临时做一个广告,就有可能导致一件商品在短时间内被大量购买 。由于此类商品日常访问较少,即使在缓存系统中一段时间后也会被逐出或过期掉,甚至在 DB 中也是冷数据 。瞬时流量的涌入,往往导致缓存被击穿,请求直接到达 DB,引发 D B压力过大 。
- 异步采集交易链路各个环节的热点 Key 信息,如 Nginx 采集访问 URL 或 Agent 采集热点日志(一些中间件本身已具备热点发现能力),提前识别潜在的热点数据 。
- 聚合分析热点数据,达到一定规则的热点数据,通过订阅分发推送到链路系统,各系统根据自身需求决定如何处理热点数据,或限流或缓存,从而实现热点保护 。
- 热点数据采集最好采用异步方式,一方面不会影响业务的核心交易链路,一方面可以保证采集方式的通用性 。
- 热点发现最好做到秒级实时,这样动态发现才有意义,实际上也是对核心节点的数据采集和分析能力提出了较高的要求 。
可以基于以下几个层次实现热点隔离:
- 业务隔离 。秒杀作为一种营销活动,卖家需要单独报名,从技术上来说,系统可以提前对已知热点做缓存预热 。
- 系统隔离 。系统隔离是运行时隔离,通过分组部署和另外 99% 进行分离,另外秒杀也可以申请单独的域名,入口层就让请求落到不同的集群中 。
- 数据隔离 。秒杀数据作为热点数据,可以启用单独的缓存集群或者 DB 服务组,从而更好的实现横向或纵向能力扩展 。
再比如,域名保持一致,但后端调用不同的服务接口;又或者在数据层给数据打标进行区分等等,这些措施的目的都是把已经识别的热点请求和普通请求区分开来 。
推荐阅读
- 简单几步学会做网站,却不懂如何赚钱?这里分享给你8种变现方法
- 只需三种手段,将传统的网站的性能提高 24%
- 网站被降权了应该怎么办?
- 教你使用nginx部署网站教程
- 怎么勾引百度蜘蛛访问你的网站
- 什么是网站TDK标签
- 110个人信息查询网 110网站查询住宿记录
- 网站漏洞测试与修复漏洞Laravel框架
- 老板说网站慢,我们总结了三大阶段提升性能
- 武夷学院大型幼儿茶艺表演感动外国友人
