首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是分布式缓存?

什么是分布式缓存?
EN

Stack Overflow用户
提问于 2013-03-17 05:42:06
回答 2查看 40.7K关注 0票数 65

我对分布式缓存的概念感到困惑。我有点了解谷歌搜索的内容。分布式缓存可以跨越多个服务器,以使其在大小和事务容量上都能增长。但是,我并不真正理解它是如何工作的,也不明白它是如何分配数据的。

例如,假设我们有数据1、2、3、4、5、6、7、8、9、102缓存服务器A和B。如果使用分布式缓存,则可能的解决方案之一是将数据1、3、5、7、9存储在缓存服务器A中,而2、4、6、8、10存储在缓存服务器B中。

那么这是正确的还是我误解了呢?

第二个问题是,我通常听到服务器节点这个词。那是什么?在上面的例子中,服务器A是一个服务器节点,对吗?

第三个问题,如果服务器(比如服务器A)出现故障,我们能做些什么呢?我的意思是,如果上面的例子是正确的,那么当服务器A关闭时,我们无法从缓存中获取数据1、3、5、7、9,那么在这种情况下,缓存服务器可以做什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-17 05:48:29

  1. 是的,服务器a上一半的数据,服务器b上一半是分布式缓存。有很多方法来分发数据,尽管某些类型的密钥哈希似乎是最流行的。
  2. 术语服务器和节点通常是可互换的。节点通常是某个集合的单个单元,通常称为群集。服务器通常是一块硬件。在erlang中,您可以在单个服务器上运行erlang运行时的多个实例,因此您将有多个erlang节点.但是通常情况下,您希望每个服务器都有一个节点来进行更优化的调度。(对于非分布式语言和平台,您必须根据需要管理流程。)
  3. 如果服务器发生故障,并且它是缓存服务器,那么数据必须来自其原始源。缓存通常是为快速检索而设计的基于内存的数据库。缓存中的数据只有在定期使用的情况下才会继续存在,并且最终会被清除。但是对于需要持久化的分布式系统,一种常见的技术是拥有多个副本。你有服务器A,B,C,D,E和F。对于数据1,你会把它放在A上,然后在B和C上复制一份。Couchbase和Riak这样做。对于数据2,它可能在B上,然后在C和D上复制,这样,如果任何一台服务器出现故障,仍然有两个副本。
票数 50
EN

Stack Overflow用户

发布于 2018-06-04 06:33:07

我使用分布式缓存解决方案已经有一段时间了(NCache、AppFabric等),我将根据我在分布式缓存方面的经验回答所有三个问题。

1:分布式缓存解决方案允许您通过创建缓存集群将数据保存在所有服务器上。假设您有两个缓存服务器(服务器节点),并且在缓存中添加了10个项。理想情况下,在两个服务器节点中都应该有5个项,因为数据负载分布在缓存集群中的服务器数量之间。这通常是通过散列和智能数据分配算法来实现的。因此,您的数据请求负载也会在所有缓存服务器之间进行分配,并且随着您作为缓存集群中的更多服务器实现跨国容量的线性增长。

2:缓存集群可以包含许多服务器机器,这些机器也称为服务器节点。是的,在您的示例中,服务器A是服务器节点或服务器机器。

3:通常使用复制支持的分布式缓存系统非常可靠。如果一个或多个服务器发生故障,并且打开了复制,那么就不会有数据丢失或停机。NCache有不同的类型来处理这个问题,例如复制拓扑和复制拓扑的划分,其中每个服务器的数据也被复制到另一个服务器。如果一台服务器发生故障,则从幸存的服务器节点自动提供该服务器的复制数据。

在您的示例中,服务器A(1、3、5、7、9)的数据被复制到服务器B(2、4、6、8、10),反之亦然。如果服务器A发生故障,服务器B上存在的服务器A的数据将被提供并从服务器B中使用,因此不会发生数据丢失。因此,如果服务器A关闭,并且应用程序请求数据(1),该数据将从服务器B检索,因为服务器B包含服务器A的所有数据的备份。这对您的应用程序是无缝的,由缓存系统自动管理。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15457910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档