02 | 如何才能做好动静分离?有哪些方案可选?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了动静分离的概念及实施方法,以及针对该问题的几种架构方案。首先,文章详细介绍了动静分离的概念,包括将用户请求的数据划分为动态数据和静态数据,并通过对静态数据的缓存来提高访问效率。接着,文章提出了对动态页面进行改造的步骤,包括URL唯一化、分离浏览者相关因素、分离时间因素、异步化地域因素以及去掉Cookie等。此外,文章还介绍了两种处理动态内容的方案:ESI(Edge Side Includes)方案和CSI(Client Side Include)方案。ESI方案在Web代理服务器上做动态内容请求,而CSI方案则是通过单独发起异步JavaScript请求获取动态内容。随后,文章详细阐述了三种架构方案:实体机单机部署、统一Cache层和上CDN,并分别分析了它们的优缺点。最后,文章总结了不同架构方案引入的问题,并强调了在设计架构方案时需要考虑的细节问题。整体而言,本文通过详细的介绍和分析,为读者提供了实现动静分离的思路和架构方案,有助于提高系统的性能和用户体验。
《如何设计一个秒杀系统》
全部留言(65)
- 最新
- 精选
- J.M.LiuHash 分组越少,缓存的命中率肯定就会越高,但短板是也会使单个商品集中在一个分组中,容易导致 Cache 被击穿,所以我们应该适当增加多个相同的分组,来平衡访问热点和命中率的问题。 老师,我也不是很明白hash分组的多少和命中率之间的关系。命中率不是只和热点数据是否被缓存有关吗,为什么和分组的多少也有关系啊?还有您说的cache分散是什么概念啊?这个问题好像很多人都问到了,看来很多人都不明白,希望老师可以比较详细地解答一下,谢谢老师。
作者回复: 举个栗子,假如三次访问同一个商品,cache分别有3组,那么如果这3次访问都分别访问不同的3组cache那么是不是3次都没命中。如果只是一组cache的话,那么除了第一次没有命中外,后面两次就命中了。所以cache分组对命中率是不是有影响了。
2018-10-23828 - 钱动静分离的思想暗含着,分而治之和重点把控变化的思维。 分而治之-几乎所有不能直接解决的问题,都会分割开来,直到比较容易解决为止,学习也类似,把不能理解的知识作分割,直到比较容易理解 把控变化-管理或者研究事物发展的趋势,就需要重点关注和把控变化的情况,静态的容易处理,所以,变化的就对整体起到了决定性的作用 对于编程缓存是提高性能的杀手锏,静态资源自然是越靠前越好,动态资源也是越靠前越好,但是需要注意处理好变化的一致性问题
作者回复: 抽象总结能力很强😉
2018-11-13221 - 阿毛分离时间因素。服务端输出的时间也通过动态请求获取。 这里的时间为什么也要动态请求呢?
作者回复: 因为时间要以服务端为准,客户端的时间用户可以自己修改
2018-10-0218 - 落叶飞逝的恋老师对于目前而言,你讲的架构方面,比如CDN、Nginx这些对于目前我的工作内容而言,涉及不到,哪怕上个新项目,我只要向运维申请机器,其他的不管,也没机会管,那么我如何快速的补充的这些东西,因为上面的讲的内容,可能对于我而言太空洞,应该如何避免?
作者回复: 只要你想学一定能找到机会,至于如何向别人学习,最简单的一个办法,多和那个同学吃吃饭,一回生二回熟😊
2018-11-09316 - 嚴脂红.*我想知道老师用的配图都是用什么软件做的呢?
作者回复: Viso就行啊
2018-10-0415 - RossoCDN二级cache缓存是一个什么概念?是一个CDN上的术语么?百度了一下没怎么查到
作者回复: 二级cache是指cdn设置了多级回源机制,就是如果缓存没有命中再到二级缓存中去取,而不是直接回服务端来请求 本质是减少回原的请求量
2018-10-0313 - Hana对于浏览器端的动静分离,疑问 问题一:动静数据在服务器端合成的话,是用什么怎么合成的? 而对于app原生开发的话 问题二:商品详情返回动静数据都是json格式的,那么在服务端如何合成呢?还是只能前段来分开请求合成?
作者回复: 动态数据在服务端合成是通过一种叫ESI的技术实现的,例如<esi:src="xx.htm"/>在静态页面中包含这种标签,然后由varnish等软件来解析这种标签,再发起动态请求,把动态请求的结果合成到静态页面中,最终形成一个完整的页面 服务端生成json格式的目的本身是方便让前端页面渲染时容易使用这些数据。可以把这些json数据在服务端合成一起输出,也可以在浏览器里单独发一个ajax请求再异步获取都可以
2018-10-2029 - A星空之夜方案一和方案二中静态页面和动态资源的组装完整页面是在服务端吗?
作者回复: 理论上都可以,各有优缺点,秒杀推荐在客户端做,普通的商品推荐在服务端做
2018-10-026 - 他城之途看评论,很多人被老师的“缓存命中率”整懵了,我觉得老师把“命中率”改成“利用率”可能会更好避免误解,老师的意思是分组多了,单个分组的“利用率”就低了。但在很多人的概念里,“命中率”是指缓存打中率,跟第一次和失效有关。
作者回复: 😉,在单独的qa文章中有介绍
2018-11-0434 - 小喵喵缓存失效了怎么办呢?文中没有给出答案,请指导一下。
作者回复: 失效需要一个失效系统来实现,一般有主动失效和被动失效 主动失效需要监控数据库数据的变化然后转成消息来发送失效消息,这个实现比较复杂,阿里有个系统叫metaq,大家可以去网上查查 被动失效就是只缓存固定时间,然后到期后自动失效
2018-10-024