3EVCache 的高可用性
AWS的每个区域一般由多个可用区(AZ)组成,而可用区一般是由多个数据中心组成。AWS引入可用区设计主要是为了提升用户应用程序的高可用性。因为可用区与可用区之间在设计上是相互独立的,也就是说它们会有独立的供电、独立的网络等,这样假如一个可用区出现问题时也不会影响另外的可用区。在一个区域内,可用区与可用区之间是通过高速网络连接,从而保证很低的延时。
EVCache实例通过将Amazon EC2放到多个可用区, 能够预防应用的单点故障。无论在相同的物理区域内还是在不同的物理区域之间,在多个AZ上运行独立的应用都是非常重要的。如果一个可用区失效了,在其它可用区上的应用可以继续运行,从而实现高可用性。
由于跨越了多个亚马逊云服务可用区,EVCache集群是不会挂掉的。当其中的实例偶然挂掉时,通过一致性哈希跨集群分片来使缓存的影响降到最低。
在保持高可用性的同时,操作EVCache集群的总体成本很低,因为缓存没有命中时访问亚马逊云服务服务的成本较高,如访问SimpleDB、AWS S3、EC2上的Cassandra等等。EVCache 集群的总体成本在高稳定,线性扩展的条件下还是令人满意的。
隐藏在需求后面的是数据或状态所需要的每个请求服务,必须是跨地区可用的。高可靠性数据库和高性能缓存是支持分布式架构的基础设施,一个典型场景是将缓存架构于数据库前面或其它持久存储前面。如果没有缓存的全局复制,一个地区的的会员切换到另外一个地区时,会在新的地区缓存中没有原地区的数据,这种情况称为冷缓存。处理这种缓存数据丢失的办法只有重新从数据库加载,但是这种方式会延长响应时间并对数据库形成巨大冲击,EVCache 除了跨可用区复制之外,还提供了跨区域复制,对基于AWS的高可用性进行了增强。
4EVCache的典型应用场景
Netflix的用户体验重度依赖于大容量、低时延、全球可用的缓存数据层。例如,用户坐在沙发上看电影或者电视节目,在用户的每一次交互中都有缓存的身影,从会话存储到视频历史,到用户状态,都得益于EVCache的稳定和高容错性。
这里介绍一个典型的用例——向用户推荐与已看历史中节目类似的电影或者电视节目。图4 介绍了推荐相似性内容的服务流程以及EVCache在其中的作用。
图4 使用EVCache推荐相似内容的典型用例
内容相似性推荐服务给出了与已看历史中节目类似的电影或者电视节目的相似性列表。一旦计算出了相似性,就存储在SimpleDB/S3 中,前端使用EVCache.当任何应用或者算法需要这些数据的时候,可以从 EVCache提取数据,并返回结果。具体过程如下:
一个客户向Web应用发了一个页面请求,处理这一请求需要得到一个电影或电视节目的相似性列表
Web应用查询 EVCache 来得到这些数据,这样场景的典型缓存命中率高于99.9%
如果缓存没有命中, Web应用将调用相似性计算服务来计算这些数据
如果已经计算过的数据也没有命中的话, 相似性计算服务将从 SimpleDB中读取数据。如果在SimpleDB 没有,相似性计算服务根据给出的电影或电视节目重新计算相似性
相似性计算服务在计算出电影或电视节目的数据后,将数据写入到 EVCache中
最后,相似性计算服务生成客户端所需要的响应并返回给客户端
EVCache 是线性扩展的,通过容量监控,可以在一分钟内扩容,在几分钟内完成重新均衡和数据预热。