当云服务融入分布式缓存系统架构,会擦出怎样的火花?

在互联网技术中有两大支点,其中一个就是缓存,而分布式缓存系统更是大型互联网应用的利器。面对不断增长的海量数据、不可预知的流量模式以及快速响应时间的需求,这正是云计算服务的动态性之关键优势。

那么,当云服务融入分布式缓存系统架构,会碰撞出怎样的火花呢?

大型互联网应用中的缓存

先回顾一下缓存在大型互联网应用的架构(如图1),网站在发展的历程中,业务量的增长是幸福的烦恼,而缓存技术就是解除烦恼的灵丹妙药,能够再次理解为什么是缓存为王。

f6de8500451e66ce54b0a1fc6a3ec3e3

图1 缓存在大型网站系统中的应用

实际上,这时的系统进入了无级缩放的大型网站阶段,当网站流量增加时,应对的解决方案就是不断地添加Web 服务器、数据库服务器以及缓存服务器了。如何动态的增减服务器,这正是云服务的用武之地。

云服务的优势

对企业而言,云服务有着诸多的商业优势。

首先,企业的前期基础设施投资几乎为零。如果要建立一个大型的系统,可能需要大量的投资用于于机房、硬件(机架、服务器、路由器、备用电源)、硬件管理(电源管理、散热)和运维人员。由于高昂的前期成本,该项目通常在开始之前需要多轮的管理审批和论证。而采用公有云服务,几乎没有固定成本或启动成本。

其次,云服务提供了基础设施即时性。在过去,当互联网应用开始大规模上量时,如果基础设施跟不上规模的增长,将会极大地影响应用的成功。但如果前期投入了大量资金,而应用没有得到普及,基础设施又将成为失败的牺牲品。云服务增加了灵活性,降低了风险和运营成本,可以根据用于成长的规模而按需付费。

最后,云服务可以更有效地利用资源,根据使用状况来计算成本,同时缩短产品的上市时间。

云服务的技术优势同样明显,主要的特点如下:自动化:基础设施的脚本化可以通过充分利用API对基础设施编程,完成构建和系统部署的可重复性。

自动扩展:无需任何人工干预,就可以根据需求对应用进行双向扩展。自动缩放提高了自动化程度从而更加高效。

主动扩展:基于需求预期和流量模式的合理规划,可以对应用进行双向扩展让从而保持低成本运营。

更有效的开发周期:可以很容易将开发和测试环境复制到生产系统,不同阶段的环境可以很容易地推广到生产系统。

改进的可测性:不需要进行硬件过载的测试,注入和自动化测试能够持续于开发过程的各个阶段。

灾难恢复和业务连续性: 云服务为维护一系列应用服务器和数据存储提供了低成本选择。使用云服务,可以在几分钟内完成将某一地点的环境复制到其他地域的云环境中。

云服务的选择有很多,如阿里云、百度云、腾讯云等,但AWS作为云服务的商用鼻祖,有着很多独特的特性和广泛的应用。AWS云服务以最小的支持和管理成本,通过高度可靠和可扩展的基础设施,提供了Web应用部署的解决方案,其灵活性远高于自建的基础设施,无论这些设施是企业内部的部署环境还是在数据中心设施。

EVCache:基于云服务的分布式缓存系统

云服务不仅为软件系统的开发和部署带来了更多的敏捷性,而且提供了更多创新的可能性。AWS云服务与分布式缓存服务系统相结合就产生了一些杰出的技术方案,一个典型的案例是Netflix的EVCache. EVCache 是一个开源、快速的分布式缓存,基于 Memcached的内存存储和 Spymemcached 客户端实现的解决方案,主要用在亚马逊弹性计算云服务 (AWS EC2)的基础设施上,为云计算做了优化,能够顺畅而高效地提供数据层服务。

EVCache 是一个缩写,包括:Ephemeral: 数据存储是短暂的,有自身的存活时间。

Volatile: 数据可以在任何时候消失。

Cache:一个内存型的键值对存储系统。

EVCache实现的主要功能包括分布式键值对存储、AWS的跨区域数据复制以及注册和自动发现新节点或新服务。EVCache典型的应用是对上下文一致性要求不高的场景,其可扩展性已经可以处理非常大的流量,同时提供了健壮的API. Netflix 是微服务架构领域的实践者,在系统中布署了上百个微服务,每一个微服务只专注做一件事情。这使得Netflix所提供的软件系统能够做到高度均衡和松耦合。由于状态都存储在缓存或持久存储中,所以这些微服务大多数是无状态的,易于自动扩展。