问题标签 [distributed-caching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3608 浏览

hibernate - Hazelcast vs Ehcache + Hazelcast 注释,用于使用 Spring 和 Hibernate 在服务/dao 层进行缓存?

我想评估 Hazecast 与 Ehcache 分布式缓存。

首先如何将它们与具有标准 dao/service 层的 Spring + Hibernate 项目一起使用。Ehcache 具有非常优雅且易于使用的注释,例如:

Hazelcast 是否有类似上述的内容?我没有找到任何信息如何以这种方式将 Hazelcast 用于实体/dtos。

0 投票
1 回答
507 浏览

c# - 用于跨网络机器共享数据的小型分布式数据库

我在 c# 中有一些 Web 服务器,需要通过 HTTP 请求来处理任务。后端在其他机器上的服务总线上工作。当我通过 http 启动任务时,任务通过总线发送,从任务返回的消息返回到网络服务器。

如果用户通过另一台机器请求任务状态,我必须能够在与起始服务器不同的网络服务器实例中获取从总线接收到的消息。

我认为我需要某种具有查询能力的分布式缓存......这个要求似乎类似于 NoSql 分布式数据库,可能 RavenDb 可能是正确的选择。但是对于像我需要的那样的“消息缓存”,RavenDb 的成本似乎很高。

你有其他提示吗?

0 投票
1 回答
2412 浏览

c# - 同一物理机上的 AppFabric 缓存服务器和 Web 应用程序

我正在考虑为我们的一个项目使用 AppFabric 缓存功能。我们需要分布式缓存功能,看来 AppFabric 是一个很好的解决方案。但是,我有几个问题希望在这里得到解答。

我们正在考虑在安装了我们的 Web 应用程序的同一台机器上托管 AppFabric 缓存服务器。我在 MSDN 文章中发现 AppFabric 应该安装在专用机器上。还注意到 AppFabric 可以与应用程序本身安装在同一台机器上,但应考虑一些问题(引自文章):

Windows Server AppFabric 缓存主机应该专用于缓存服务,这意味着这些服务器不能同时用作应用程序、Web 或数据库服务器。可以在集群中使用非专用缓存服务器,但不支持这种情况。尽管有此策略,但如果您决定使用非专用缓存主机,请确保正确估计和测试每个缓存主机的配置,以便为缓存服务和机器上的所有其他服务提供足够的内存和网络资源。还要了解其他服务的处理器和网络利用率峰值将对缓存集群的性能和稳定性产生负面影响。

这是这篇文章的链接:文章#1

现在,这听起来很合理,我认为限制可以使用的 RAM AppFabric 缓存数量就足够了。但是,阅读 MSDN 上的另一篇文章,我发现了这一点:

对于物理机和虚拟机,您都应该将缓存集群的位置记录到使用缓存的应用程序或 Web 服务器上。如果它们位于不同的数据中心,请确保这些数据中心之间的延迟不会对您的性能产​​生负面影响。在这个阶段,可能很想将您的应用程序或 Web 服务器用作缓存服务器。尽管可能,但这不受支持。首先,这些机器上的 IIS 等服务的任何资源使用高峰都可能影响缓存集群。其次,缓存服务假定它位于专用服务器上,并且可能使用比您指定的更多的内存。

这是这篇文章的链接:文章#2

如果我正确理解了上面的陈述,这意味着尽管我对 AppFabric 进行了配置设置,但它会占用尽可能多的 RAM?这真的是真的吗?有没有人对应用程序和 AppFabric 位于同一台机器上的配置有一些经验?

0 投票
2 回答
184 浏览

java - 在 Terracotta 的上下文中,“it deltas memory”是什么意思?

我正在读《春天食谱》这本书。我无法理解关于兵马俑的某些说法。

以下是书中的一段话

Terracotta 与今天的大多数集群缓存不同,因为它没有可见的 API,而且它在将更改的状态传送到集群中的节点方面效率更高。大多数系统使用某种 Java 序列化或广播机制,其中每个其他节点都被赋予整个对象或对象图,这些对象或对象图已更改,无论它们是否需要了解新状态。Terracotta 的做法不同:它对对象图本身的内存进行增量,并同步集群中的其他节点,因为它们需要对象状态的一致视图。简而言之,它可以做的事情相当于只传输一个对象中的一个更新变量,而不是整个对象。

我可以理解它不使用序列化之类的东西来跨集群传输对象,但是“它增量内存”是什么意思?

0 投票
1 回答
325 浏览

mongodb - Web缓存策略

所以我有一些页面要缓存,大约 500 万。

  1. 页面很少更新
  2. 我想通过 nginx 服务它
  3. 由于服务器不同,无法使用文件系统进行缓存。

我需要一些独立的数据库或NetFS或其他东西,它必须对Nginx可见才能提供静态服务,并且后端可以控制它的缓存。

目前我在看 mongodb gridfs,但我不确定它是不是不错的选择。它几乎没有令人不快的限制。

静态文件的最佳可扩展数据库是什么?

0 投票
3 回答
1155 浏览

ehcache - 使用 JTA 工作的分布式 Ehcache

我正在尝试使用 Terracotta Ehcache(开源)对分布式事务内存进行一些基准测试。我在理解它与 JTA 的工作时遇到了一些问题。在代码中,我发现对分布式事务感兴趣的缓存将自己作为具有 JTA 的资源登记为 JTA 稍后在其上执行两阶段提交的资源。

我的问题是,如果只有一个缓存被列为资源,JTA 将如何能够在分布式设置中自动更新所有其他缓存?我们没有将其他缓存引用传递给 JTA,因此不会对它们进行原子更新。我觉得,我在这里遗漏了一些字符串,谁能解释它是如何工作的?我也是 J2EE 的新手,我是否遗漏了一些允许将其他缓存自动引用传递给 JTA 的 J2EE 概念?

0 投票
1 回答
76 浏览

.net - AppFabric 缓存向哪个服务器发送请求

AppFabric 缓存如何决定写入哪个缓存服务器?

它是否像 memcached 一样使用一致的哈希?

0 投票
1 回答
264 浏览

python - 持久存储 HTTP 响应以在 Web 抓取应用程序中使用的最佳方法是什么

我正在寻找适合保存(和缓存)由请求 URL 键入的 HTTP 响应(内容、HTTP 标头、时间戳)的 python 中的键/值存储。该应用程序是一个网络抓取引擎,定期查询多个站点。然后一组例程分析抓取的数据。

到目前为止,我调查的选项包括:

  • python shelve 模块(速度快但不能分发数据,只能单进程写入)

  • mongodb(相对较快,到目前为止最适合我正在寻找的东西)

  • couchdb(对于这个应用程序来说太慢了)

  • memcached(不适合,因为store不是持久化的,缓存的数据不能复制,有错请指正)

使用真实抓取数据的一些性能结果:

0 投票
1 回答
7229 浏览

java - EhCache:复制与分布式缓存配置

所以在 EhCache 中我们有三大类:

  • Cache,
  • CacheManager, 和
  • Store

在复制设置下,其中哪些实际上正在被复制?Cache、CacheManager 还是 Store?调用 aCachecache(K,V)方法将该条目放入Store它已配置的任何底层(内存、磁盘等),但是什么复制机制将此条目与其他复制机制同步?

一旦我理解了这一点,我将能够理解当我们配置了分布式缓存时,这些相同的“复制机制”如何改变角色。所以我的下一个问题是:在什么情况下会选择复制而不是分布式?分布式似乎一直是更强大的选择。

最后一个问题:开源 EhCache 发行版中是否提供复制和/或分发?从文档中我无法判断 EhCache 是否使用术语“企业”作为“专有”或“许可”的同义词。

0 投票
5 回答
455 浏览

c# - 分布式列表中的冲突解决

我想维护一个分布在 N 个负载平衡服务器之间的对象列表:每当客户端更改一台服务器上的列表时,我希望这些更改迁移到其他服务器。所以,我想这是一个主主复制的例子。处理这个最简单的方法是什么?一个简化的事实是,对列表中对象的每次更改都附加了一个相关的不断增加的版本号。因此,如果在两台不同的服务器上更改了一个项目,并且这两个增量进入第三台服务器,则可以解决冲突。

编辑:澄清:我非常熟悉 Memcached 和 Redis 等分布式键值存储。这不是这里的问题;我感兴趣的是一种解决共享列表中冲突的机制:如果服务器 A 更改列表中的一个项目,而服务器 B 删除该项目,例如,如何以编程方式解决冲突。