秒杀系统架构关键技术-动静分离

何为动静数据

“动态数据”和“静态数据”的主要区别就是看页面中输出的数据是否和 URL、浏览者、时间、地域相关,以及是否含有 Cookie 等私密数据
静态数据,不能仅仅理解为传统意义上完全存在磁 盘上的 HTML 页面,它也可能是经过 Java 系统产生的页面,但是它输出的页面
本身不包含上面所说的那些因素。也就是所谓“动态”还是“静态”,并不是说 数据本身是否动静,而是数据中是否含有和访问者相关的个性化数据。
 

缓存静态数据策略

第一,你应该把静态数据缓存到离用户最近的地方

第二,静态化改造就是要直接缓存 HTTP 连接

第三,选用合适的缓存系统缓存数据

如何做动静分离的改造

从以下 5 个方面 来分离出动态内容

1. URL 唯一化
2. 分离浏览者相关的因素
3. 分离时间因素
4. 异步化地域因素
5. 去掉 Cookie
 
动态内容的处理通常有两种方案:ESI(Edge Side Includes)方案和 CSI(Client Side Include)方案
1. ESI 方案(或者 SSI):即在 Web 代理服务器上做动态内容请求,并将 请求插入到静态页面中,当用户拿到页面时已经是一个完整的页面了。这
    种方式对服务端性能有些影响,但是用户体验较好。
2. CSI 方案。即单独发起一个异步 JavaScript 请求,以向服务端获取动态 内容。这种方式服务端性能更佳,但是用户端页面可能会延时,体验稍 差。
 
动静分离的几种架构方案
方案 1:实体机单机部署
这种方案是将虚拟机改为实体机,以增大 Cache 的容量,并且采用了一致 性 Hash 分组的方式来提升命中率。这里将 Cache 分成若干组,是希望能达到
命中率和访问热点的平衡。Hash 分组越少,缓存的命中率肯定就会越高,但短 板是也会使单个商品集中在一个分组中,容易导致 Cache 被击穿,所以我们应
该适当增加多个相同的分组,来平衡访问热点和命中率的问题。
方案 2:统一 Cache 层
所谓统一 Cache 层,就是将单机的 Cache 统一分离出来,形成一个单独的
Cache 集群。统一 Cache 层是个更理想的可推广方案,该方案的结构图如下:
方案 3:上 CDN
在将整个系统做动静分离后,我们自然会想到更进一步的方案,就是将 Cache 进一步前移到 CDN 上,因为 CDN 离用户最近,效果会更好。
但是要想这么做,有以下几个问题需要解决。1. 失效问题,2. 命中率问题,3. 发布更新问题。基于上面几个因素,选择 CDN 的二级 Cache 比较合适,
因为二级 Cache 数量偏少,容量也更大,让用户的请求先回源的 CDN 的二级 Cache 中,如果没命 中再回源站获取数据。
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值