0

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

  1. 分布式缓存是否意味着缓存应该是分布式或分布式应用程序,以一致的方式使用持久数据的缓存。
  2. 如果缓存也是分布式的,它们是否需要在缓存条目方面不相交,或者它们可以共享它们,或者每个缓存中的缓存条目应该相同。
  3. 缓存应该驻留在哪里。在应用程序内部或外部化,如果两种方法都可行,那么在什么情况下应该首选哪一种。
  4. 在进程中分布式缓存的情况下,一致性通信如何发生。
  5. 如果缓存位于应用程序实例之外,那么以非脱节的方式分布缓存并保持它们之间的一致性是否有好处,或者最好维护一个缓存(或多个不相交)。
  6. 在缓存实例从应用程序实例外部化的情况下,网络开销可能有多大。或者在尝试构建分布式缓存解决方案时应该如何关注网络开销(缓存通信的过程)。

我对事情有点新手,所以上面列出的某些问题甚至可能没有意义。对此也提出了解决方案/更正建议。

4

1 回答 1

0

我对答案的最佳尝试:

  1. 我会说两者。分布式缓存意味着缓存的逻辑概念分布在多台不同的机器上。例如,您的缓存中可能有 5 个节点,每个节点都在它的机器/VM 上。

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

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

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

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

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

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

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

  5. 我会维护一个分布在多台机器上的逻辑缓存。再次这样做的原因是如果一个节点出现故障。如果您的缓存节点出现故障并且它具有其他任何地方都不存在的值,那么您就有大麻烦了。(数据库可能会因为缓存正在处理的请求而不堪重负。)

  6. 好问题。=)如果盒子在同一个内部网络上,成本真的非常低。只要缓存不在西海岸而 Web 服务器在东海岸,就应该没问题。当然,这是要付出代价的,但有一些创造性的方法可以绕过它。

希望有帮助!

于 2013-07-16T16:30:03.763 回答