我对分布式缓存的概念感到困惑。我有点了解谷歌搜索的内容。分布式缓存可以跨越多个服务器,以使其在大小和事务容量上都能增长。但是,我并不真正理解它是如何工作的,也不明白它是如何分配数据的。
例如,假设我们有数据1、2、3、4、5、6、7、8、9、10和2缓存服务器A和B。如果使用分布式缓存,则可能的解决方案之一是将数据1、3、5、7、9存储在缓存服务器A中,而2、4、6、8、10存储在缓存服务器B中。
那么这是正确的还是我误解了呢?
第二个问题是,我通常听到服务器节点这个词。那是什么?在上面的例子中,服务器A是一个服务器节点,对吗?
第三个问题,如果服务器(比如服务器A)出现故障,我们能做些什么呢?我的意思是,如果上面的例子是正确的,那么当服务器A关闭时,我们无法从缓存中获取数据1、3、5、7、9,那么在这种情况下,缓存服务器可以做什么?
发布于 2013-03-17 05:48:29
发布于 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的所有数据的备份。这对您的应用程序是无缝的,由缓存系统自动管理。
https://stackoverflow.com/questions/15457910
复制相似问题