什么是分布式缓存,用于缓存多个应用程序/应用程序的多个实例的持久数据

时间:2013-07-12 12:55:15

标签: caching distributed-caching

我一直在尝试研究分布式缓存一段时间,并没有澄清下面列出的某些问题:

  1. 分布式缓存是否意味着缓存应该是分布式或分布式应用程序,以一致的方式缓存持久性数据。
  2. 如果高速缓存也是分布式的,它们需要在高速缓存条目方面不相交,或者它们可以共享它们,或者每个高速缓存中的高速缓存条目应该是相同的。
  3. 缓存应驻留在何处。在申请流程内部或外部化,如果两种方法都可行,那么在哪种情况下应该首选哪一种。
  4. 如果正在进行分布式缓存,则如何进行一致性通信。
  5. 如果缓存位于应用程序实例之外,是否有利于分配缓存并以非不相交的方式保持它们之间的一致性 或者维护单个缓存(或多个脱离)更好。
  6. 如果缓存实例从应用程序实例外部化,则网络开销可能会有多大。或者应该如何关注 尝试构建分布式缓存解决方案时的网络开销(缓存通信的过程)。
  7. 我对事情有点新手,所以上面列出的某些问题甚至可能毫无意义。此处还建议了解决方案/更正。

1 个答案:

答案 0 :(得分:0)

我最好的答案:

  1. 我会说两个。分布式缓存意味着缓存的逻辑思想分布在多个不同的机器上。例如,您的缓存中可能有5个节点,每个节点都位于计算机/ VM上。

    通常,一旦需要分布式缓存,您的应用程序也会分发。小型网站=一台服务器,可能是一个缓存节点。大网站=许多网络服务器,分布式缓存。

  2. 大多数分布式缓存在节点之间均匀分配缓存条目。如果您将条目写入一个节点,它将被复制到所有其他节点。我们的想法是,每个缓存节点都可以从“集群”中取出,并且不会丢失任何数据。

    在一台计算机上有一个缓存条目的想法称为分片。这意味着您查看缓存键,然后决定将其存储在哪个缓存节点上。

    对于现有的分布式缓存,您不必管理/担心任何此类缓存。

  3. 对于分布式缓存,它们应该在自己的机器上,而不运行其他进程。缓存通常驻留在内存中,因此您不希望其他内容竞争该宝贵的RAM。

    从技术上讲,您可以将Web服务器与缓存节点放在同一台计算机上,但请注意它们将竞争物理资源。

  4. 不要担心。 =)每个分布式缓存的行为都不同,因此读取它是很好的,但它们都可以自己处理数据复制。您不必担心/管理它。

  5. 我会维护一个分布在许多机器上的逻辑缓存。再次出现这种情况的原因是节点出现故障。如果您的缓存节点出现故障且其他地方的值不存在,那么您就遇到了大麻烦。 (数据库可能会因缓存正在处理的请求而不堪重负。)

  6. 好问题。 =)如果盒子在同一个内部网络上,那么成本确实非常低。只要缓存不在西海岸,网络服务器在东海岸,你应该没问题。当然要付出代价,但有创造性的方法来解决它。

  7. 希望有所帮助!