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的得到的一些知识,还有业界的某些做法。

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

 

菊子曰 本文用 菊子曰发布

你可能感兴趣的:(cache)