• james
    2019-02-14
    现在不都是前后端分离嘛, 不知道为啥还要将动静分离拿出来说事, 前端页面部署CDN早就标配了, 对于秒杀操作, 没有哪个平台是让用户刷新页面的, 都是到时间后点击按钮来秒杀, 而且这个缓存策略不应该是第一次访问不到再查询缓存, 应该在商家创建完秒杀产品后, 缓存就有了, 如果修改内容, 就直接更新缓存, 秒杀开始后, 商家就不能再修改了, 不想抬杠, 反正我认为这篇文章没啥干货
     7
     80
  • 刘晓林
    2018-10-23
    Hash 分组越少,缓存的命中率肯定就会越高,但短板是也会使单个商品集中在一个分组中,容易导致 Cache 被击穿,所以我们应该适当增加多个相同的分组,来平衡访问热点和命中率的问题。

    老师,我也不是很明白hash分组的多少和命中率之间的关系。命中率不是只和热点数据是否被缓存有关吗,为什么和分组的多少也有关系啊?还有您说的cache分散是什么概念啊?这个问题好像很多人都问到了,看来很多人都不明白,希望老师可以比较详细地解答一下,谢谢老师。

    作者回复: 举个栗子,假如三次访问同一个商品,cache分别有3组,那么如果这3次访问都分别访问不同的3组cache那么是不是3次都没命中。如果只是一组cache的话,那么除了第一次没有命中外,后面两次就命中了。所以cache分组对命中率是不是有影响了。

     2
     18
  • 阿毛
    2018-10-02
    分离时间因素。服务端输出的时间也通过动态请求获取。

    这里的时间为什么也要动态请求呢?

    作者回复: 因为时间要以服务端为准,客户端的时间用户可以自己修改

    
     15
  • 嚴脂红.*
    2018-10-04
    我想知道老师用的配图都是用什么软件做的呢?

    作者回复: Viso就行啊

    
     13
  • 落叶飞逝的恋
    2018-11-09
    老师对于目前而言,你讲的架构方面,比如CDN、Nginx这些对于目前我的工作内容而言,涉及不到,哪怕上个新项目,我只要向运维申请机器,其他的不管,也没机会管,那么我如何快速的补充的这些东西,因为上面的讲的内容,可能对于我而言太空洞,应该如何避免?

    作者回复: 只要你想学一定能找到机会,至于如何向别人学习,最简单的一个办法,多和那个同学吃吃饭,一回生二回熟😊

     1
     11
  • Rosso
    2018-10-03
    CDN二级cache缓存是一个什么概念?是一个CDN上的术语么?百度了一下没怎么查到

    作者回复: 二级cache是指cdn设置了多级回源机制,就是如果缓存没有命中再到二级缓存中去取,而不是直接回服务端来请求
    本质是减少回原的请求量

    
     9
  • godtrue
    2018-11-13
    动静分离的思想暗含着,分而治之和重点把控变化的思维。
    分而治之-几乎所有不能直接解决的问题,都会分割开来,直到比较容易解决为止,学习也类似,把不能理解的知识作分割,直到比较容易理解
    把控变化-管理或者研究事物发展的趋势,就需要重点关注和把控变化的情况,静态的容易处理,所以,变化的就对整体起到了决定性的作用

    对于编程缓存是提高性能的杀手锏,静态资源自然是越靠前越好,动态资源也是越靠前越好,但是需要注意处理好变化的一致性问题

    作者回复: 抽象总结能力很强😉

    
     8
  • A星空之夜
    2018-10-02
    方案一和方案二中静态页面和动态资源的组装完整页面是在服务端吗?

    作者回复: 理论上都可以,各有优缺点,秒杀推荐在客户端做,普通的商品推荐在服务端做

    
     5
  • Hana
    2018-10-20
    对于浏览器端的动静分离,疑问
    问题一:动静数据在服务器端合成的话,是用什么怎么合成的?

    而对于app原生开发的话
    问题二:商品详情返回动静数据都是json格式的,那么在服务端如何合成呢?还是只能前段来分开请求合成?

    作者回复: 动态数据在服务端合成是通过一种叫ESI的技术实现的,例如<esi:src="xx.htm"/>在静态页面中包含这种标签,然后由varnish等软件来解析这种标签,再发起动态请求,把动态请求的结果合成到静态页面中,最终形成一个完整的页面

    服务端生成json格式的目的本身是方便让前端页面渲染时容易使用这些数据。可以把这些json数据在服务端合成一起输出,也可以在浏览器里单独发一个ajax请求再异步获取都可以

    
     3
  • 他城之途
    2018-11-04
    看评论,很多人被老师的“缓存命中率”整懵了,我觉得老师把“命中率”改成“利用率”可能会更好避免误解,老师的意思是分组多了,单个分组的“利用率”就低了。但在很多人的概念里,“命中率”是指缓存打中率,跟第一次和失效有关。

    作者回复: 😉,在单独的qa文章中有介绍

     1
     2
  • func
    2018-10-08
    没明白老师数的这个意思指的是?Cache层是web缓存可以直接缓存http请求,例如varnish?web缓存,缓存http请求?缓存的是请求后返回的数据?如果是同一个http请求就不会走到 redis cache了?

    作者回复: 你可以了解一下varnish的原理

    
     2
  • 小喵喵
    2018-10-02
    缓存失效了怎么办呢?文中没有给出答案,请指导一下。

    作者回复: 失效需要一个失效系统来实现,一般有主动失效和被动失效
    主动失效需要监控数据库数据的变化然后转成消息来发送失效消息,这个实现比较复杂,阿里有个系统叫metaq,大家可以去网上查查

    被动失效就是只缓存固定时间,然后到期后自动失效

    
     2
  • sgl
    2018-10-02
    想问一下,方案一和方案二里的cahe层,还有一个缓存,缓存是什么?

    作者回复: Cache层是web缓存可以直接缓存http请求,例如varnish

    另外一个缓存就是redis这种

    
     2
  • 杨晓维
    2019-07-17
    所以到这边还没有用到Redis吗?
    
     1
  • ~~
    2019-04-24
    老师您好,我想请问统一Cache中所说到的: 不同系统之间的内存可以动态切换,具体是指什么情况呢?

    作者回复: 就是一个大的cache,存放了不同的内容,可以调整存的比例

    
     1
  • 威猛小茂然
    2019-03-13
    写的挺不错的
    
     1
  • 不似旧日
    2019-02-21
    最近面试经常问道如何设计一个秒杀系统,感觉这个专栏不适合面试,适合实操

    作者回复: 🙂

    
     1
  • 🐻两脚兽จุ๊บ。
    2019-01-23
    许大大你好. 今天看了您这篇动静分离的干货, 受益匪浅. 想请教个问题. 方案1里面提到的把通常只需要虚拟机或者容器运行的 Java 应用换成实体机, 并且列出了实体机的几个优点. 这里面还是不大懂实体机相对于虚拟机为什么会存在这些差异. 我认为的是: 虚拟机只不过是实体机通过vps软件虚拟化出来的服务器而已, 同等配置的虚拟机跟实体机本质上没什么差别, 为什么会有网络瓶颈, 甚至大内存差别??? 希望得到徐老师的回复.谢谢

    作者回复: 多个虚拟机实际上就是共用一个实体机,所以每个虚拟机能用的资源就是少一些,因为每个虚拟机会竞争整个实体机的资源,例如网络和内存。所以单个实例来讲虚拟机和实体机能用的资源还是有很大差异的

    
     1
  • 黄欢
    2019-01-18
    请问一致性Hash和提高命中率有什么关系?

    作者回复: 一致性hash可以让相同的请求落在同一台机器上,这样就可以提升cache的命中率了,也可以看看第8节我专门解释了这个问题

    
     1
  • rice
    2018-10-27
    关于商品详情页缓存在cdn,为何cdn二级缓存的节点少呢?为何不是cdn一级缓存?

    作者回复: 一般情况下,有多级缓存的话,都是二级缓存的节点数少一点,这样能提升二级缓存的命中率。

    选一级缓存也是为了提升命中率

    
     1
我们在线,来聊聊吧