• CDN设计 层级化的cache_A


    本节主要来自 web caching 的 Chapter 7. Cache Hierarchies , 这节主要就是笔记。

    cache层级化主要是为了提高命中率,cache无论是容量还是性能都是有限的,假如cache miss了,从neighbor cache获取内容一般来讲比从origin server好:  可以节约延迟和WAN的带宽。

    层级化意味着多个cache,cache之间常见的关系是两种:parent-child, sibling-sibling , neighbor 和 peers的意义比较自由,可以包含这两种含义。

    • child cache 会将请求转到它的 parent , parent 会从自身cache,或者origin server, 或者其它cache来满足该请求。
    • sibling 的请求应该都是命中的,而sibling假如peer的请求没有命中,也不应该去试图获取该内容,它会返回一个表示出错的消息,sibling之间使用一些intercache协议来交互,来知道哪个peer有指定内容
    • parent-child, sibling-sibling 关系并非固定,一个cache可以作为某些cache的parent,同时是另外的cache的sibling;或者对于特定域的请求是parent,其它的是sibling
    • peers关系不一定对称,A可以发request给B,但是B不一定能够发request给A,一般来讲,parent-child关系都非对称,sibling关系常常是对称的

    最后组成了 hierarchical topology ,

    figs/WebC_0701.gif

    下面这个就不是hierarchical topology , 而是 mesh topology .

    figs/WebC_0702.gif

    7.2.1 Performance

    要获得性能提升,需要一些条件(必须全部满足):

    • 一些本地没有得内容可以从peer得到
    • 从peer得到的cache hit比从origin server块
    • parent cache,的cache miss不会明显比origin server慢

    假如parent cache 负载很重,或者neighbor cache 比较远,都会使性能受到影响,而且这些可能随着时间或者其他条件而不同,所以需要一些minitor tool来监控情况。

    7.2.2 Nondefault Routing

    Parent caches are useful when you need to force web traffic along a specific route in your network。 比如防火墙。一些机构还使用多个parent,因为一些链路可能便宜但是拥塞,而昂贵的链路比较快速,所以可以根据优先级来选择链路。

    附言:我目前从事 Video CDN 的设计开发,也做Streaming Server cluster,折腾了8年了。CDN这个行业说新不新,说老不老,和CDN相关的文章有很多,但是说"大"概念的很多,人云亦云的很多,我想想把我这些年的经验东西写成一个系列,记录一些东西,有我实现过的,也有一些没有没有实现过的想法,有看书或者paper的得到的一些知识,还有业界的某些做法。

    最近的工作的重心转移了,做技术研究的时间也越来越少,感觉这两年的文章越写越少,质量也低了,先把写系列的话放出来,可以避免自己食言:>

    菊子曰 本文用菊子曰发布
  • 相关阅读:
    知方可补不足~Sqlserver发布订阅与sql事务的关系
    基础才是重中之重~泛型类的静态构造方法可不是只执行一次呀
    EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~终结~配置的优化和事务里读写的统一
    EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~再续~添加对各只读服务器的心跳检测
    windows服务的创建、安装和调试
    Axure RP 实践.1
    实习第一天之数据绑定:<%#Eval("PartyName")%>'
    Hadoop云计算大数据书籍分享
    Android利用setLayoutParams在代码中调整布局(Margin和居中)
    TopCoder中插件的用法
  • 原文地址:https://www.cnblogs.com/peon/p/1948564.html
Copyright © 2020-2023  润新知