dot Redis 8 来了——而且是开源的

了解更多

将内存 NoSQL 提升到新的水平

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

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

Amazon 试图通过提供 ElastiCache(一种基于云的增值服务)来简化 Memcached 的使用,用户无需安装 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 家参与公司结束了一项封闭的 Beta 试验,其中所有这些功能都经过了广泛的测试和验证,——并且效果很好! 所以这不再是一个概念,它是真实的,它将改变人们使用 Memcached 和 Redis 的方式! 我今天很兴奋吗? 绝对是!

图 1 – DB 缓存演变