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

何为动静数据

“动态数据”和“静态数据”的主要区别就是看页面中输出的数据是否和 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 中,如果没命 中再回源站获取数据。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值