dot 您所在城市的活动即将迎来速度的未来。

加入 Redis 发布会

将内存 NoSQL 带入新阶段

我们今天发布了第一个内存 NoSQL 云,它将改变人们使用 Memcached 和 Redis 的方式。这是一个很好的机会,可以审查这些基于 RAM 的数据存储的状态,并建议在云中操作它们的一种新的高效方法。Memcached 和 Redis 正在被当今的 Web 应用程序越来越广泛地采用,并被用于扩展其数据层并显着提高应用程序性能(在许多情况下,性能提高了 10 倍以上,超过了标准 RDBMS 实现)。但是,云计算在处理扩展和应用程序可用性的方式上带来了新的挑战,以其简单形式使用 Memcached 和 Redis 可能不足以应对这些挑战。**Memcached** 不用说,Memcached 对需要快速向快速增长的用户群提供动态内容的网站来说效果很好。Facebook、Twitter、Amazon 和 YouTube 严重依赖 Memcached 来帮助它们扩展;Facebook 使用 Memcached 每秒处理数百万个查询。但 Memcached 不仅仅是巨头们专属的。任何关注响应时间和基于用户的增长的网站都应该考虑使用 Memcached 来提升其数据库性能。这就是为什么超过 70% 的所有 Web 公司(其中大部分托管在公有云和私有云中)目前正在使用 Memcached。**本地 Memcached** 是最简单、最快的缓存方法,因为您将数据缓存在与应用程序代码相同的内存中。需要更快地渲染下拉列表?从数据库中读取列表一次,并将它缓存在 Memcached HashMap 中。需要避免对 SQL 调用进行性能损耗的磁盘 thrashing 以反复渲染用户的个性化网页?在用户会话中缓存用户资料和渲染的页面片段。尽管本地缓存对于在一两个应用程序服务器上运行的 Web 应用程序来说很好,但在数据太大而无法容纳在应用程序服务器内存空间中,或者当缓存的数据由多个应用程序服务器和用户请求跨服务器更新和共享时,它就不够好了。在这种情况下,用户会话与特定的应用程序服务器无关。在这些条件下使用本地缓存最终可能会导致命中率低和应用程序性能差。**分布式 Memcached** 倾向于通过允许多个应用程序服务器共享同一个缓存集群来改进本地缓存。尽管 Memcached 客户端和服务器代码相当简单易于部署和使用,但分布式 Memcached 存在一些固有的缺陷

  • 缺乏高可用性 - 当 Memcached 服务器宕机时,应用程序的性能会受到影响,因为所有数据查询现在都将发送到 RDBMS,而 RDBMS 提供的速度要慢得多。问题解决后,可能需要几个小时到几天的时间才能让恢复的服务器“热身”,并再次完全有效。在更严重的情况下,如果会话数据存储在 Memcached 中而没有持久存储,则丢失 Memcached 服务器可能会导致用户强制退出或清空他们的购物车(在电子商务网站中)。
  • 故障处理麻烦 - 操作员需要为替换服务器设置所有客户端,并等待它“预热”。操作员有时会向其 RDBMS 添加临时从服务器,以卸载主服务器,直到其 Memcached 恢复。
  • 扩展麻烦 - 当应用程序数据集超出当前 Memcached 资源容量时,操作员需要通过向 Memcached 层添加更多服务器来扩展。但是,并非总是清楚何时确切地达到这个点,许多操作员在注意到其应用程序性能下降后才匆忙扩展。
  • 扩展对性能的影响 - 扩展(或缩减)Memcached 通常会导致缓存数据集的部分或全部丢失,从而再次导致应用程序性能下降。
  • 高效地操作 Memcached 需要人力 - 在需要时进行监控、优化和扩展。在许多 Web 公司中,这些任务是由昂贵的开发人员或 DevOps 完成的。

Amazon 试图通过提供 ElastiCache 来简化 Memcached 的使用,ElastiCache 是一种基于云的增值服务,用户无需安装 Memcached 服务器,而是租用预加载 Memcached 的 VM(实例)(成本高于普通实例)。但是,ElastiCache 没有为上述任何 Memcached 缺陷提供解决方案。此外,ElastiCache 通过向用户的集群添加一个完整的 EC2 实例来进行扩展,这对那些只需要一个或两个 GB 额外 Memcached 的用户来说是一种浪费。通过这种模式,ElastiCache 没有实现云计算的真正承诺 - “只消费和支付您真正需要的”(与电力、水和天然气相同)。**Redis** Redis 是一种开源的键值内存 NoSQL 数据库,从 2009 年开始快速发展,现在被 Instagram、Pinterest、Digg、Github、flickr、Craigslist 等许多公司使用,并拥有一个由 VMware 赞助的活跃的开源社区。Redis 可用作与 RDBMS 并行的增强型缓存系统,或用作独立数据库。Redis 提供了一套全新的数据类型,专门用于以超快且更高效的方式服务现代 Web 应用程序。它解决了一些 Memcached 缺陷,尤其是在高可用性方面,因为它提供了复制功能和持久存储。但是,它仍然存在以下缺点

  • 故障处理麻烦 - 没有自动故障转移机制;当服务器宕机时,操作员仍然需要激活副本或从持久存储中构建副本。
  • 可扩展性 - Redis 仍然局限于单个主服务器,尽管集群管理功能正在开发中,但它可能不会易于实施和管理,并且不会支持所有 Redis 命令,使其与现有部署不兼容。
  • 操作 - 构建强大的 Redis 系统需要对 Redis 复制和数据持久性细微差别有很强的领域专业知识,构建 Redis 集群将相当复杂。

**一项新的云服务改变了人们使用 Memcached 和 Redis 的方式** 想象一下连接到一个无限的 RAM 内存池,并根据需要随时提取 Memcached 或 Redis 内存,而无需担心可扩展性、高可用性、性能、数据安全性和操作问题;所有这些,只需点击一个按钮(好吧,几个按钮)。想象一下只为使用的 GB 付费,而不是为完整的 VM 付费,而且价格与您为普通实例支付给云提供商的价格相似。欢迎来到 Garantia Data 内存 NoSQL 云! 我所说的内存 NoSQL 云是指一种在线的、基于云的、内存 NoSQL 数据存储服务,它将操作、监控、处理故障和扩展 Memcached 或 Redis 的负担从应用程序操作员的肩上卸下。以下是 Garantia Data 提供的此类服务的 6 大主要功能

  • 简单性 - 操作员不再需要配置和维护节点和集群。标准 Memcached/Redis 客户端设置为服务 DNS,从现在开始,所有操作问题将由服务自动处理。
  • 无限可扩展性 - 该服务提供了一个无限的内存池,具有真正的自动扩展(向上或向下)功能,可精确地适应用户数据集的大小。操作员无需监控驱逐率或性能下降以触发扩展;系统会持续监控这些指标,并根据需要调整用户的内存大小以满足性能阈值。
  • 高可用性 - 内置的自动故障转移确保在任何情况下都能保证数据。默认情况下提供用户整个数据集的本地持久存储,而内存复制可以在点击鼠标时配置。此外,在扩展或缩减时不会有任何数据丢失。
  • 改进的应用程序性能 - 通过持续监控和扩展用户的内存来优化响应时间。采用了几种有效地驱逐未用和已过期对象的技巧,以显着提高命中率。
  • 数据安全性 - 对于那些担心将数据集托管在共享服务环境中的操作员,Garantia Data 将整个数据集的完全加密作为其服务的一个关键要素。
  • 成本节约 - Garantia Data 使开发人员无需处理数据完整性、扩展、高可用性和 Memcached/Redis 版本合规性问题。通过只为消耗的 GB 付费,而不是为完整的 VM(实例)付费,可以实现额外节省。该服务遵循云计算的真正精神,使内存消耗的付费方式更像电力、水或天然气,因此您“只为真正消费的内容付费”。

我们最近完成了一个封闭的测试版试用,20 家参与公司对所有这些功能进行了广泛的测试和验证 - 而且它运行良好!所以这不再是一个概念,它是真实的,它将改变人们使用 Memcached 和 Redis 的方式!我今天激动吗?绝对是的!

图 1 - 数据库缓存演进