问题标签 [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 回答
2141 浏览

ehcache - 将 javax.cache.CacheManager 与 EhCache 一起使用

我正在尝试使用 javax.cache.CacheManager JSR107 API,使用 EhCache 作为缓存解决方案提供程序。但我找不到任何此类资源。

根据http://ehcache.org/documentation/integrations/jsr107上的链接,它表示 ehcache jsr107 仍处于草稿阶段。任何人都可以确认它是否仍然如此?

使用 JSR107 javax.cache.* 类使用 net sf cacheManager 的任何示例代码?

谢谢, 哈里什

0 投票
1 回答
1354 浏览

distributed-caching - 寻找轻量级的分布式数据库/缓存

我将存储简单的纯文本,但我正在从 (D)DB/缓存中寻找这些功能:

  • 跨所有节点复制
  • 将节点添加到实时集群
  • 免费
  • 持久化到磁盘(而不是另一个数据库)
  • 使用相对较少的资源

Apache ZooKeeper 未能满足数据库要求,但我有点想滥用它来实现我的意图......

Apache Cassandra 未能满足最后一个要求。

Redis 在第一次要求时失败了(除非你准备好动手?)。

Hazelcast 和 Voldemort 在坚持上失败了,AFAIK。

这些是我的首选,现在我想知道我是否走在正确的轨道上,还是有其他解决方案?

谢谢!

0 投票
1 回答
1509 浏览

caching - Azure 本地缓存与分布式缓存

过去几天我一直在使用 Azure 缓存。好的做法是使用本地缓存功能来防止到分布式缓存的往返。

可以在文档中阅读;当您调用 dataCache.Get(...) 时,应用程序首先检查本地缓存中的版本是否可用,如果没有,则从分布式缓存中检索对象。问题是本地版本可能比对象的分布式版本更旧。为了解决这个问题,可以使用“dataCache.GetIfNewer(...)”方法来检查本地对象的版本是否与分布式版本不同,如果不同,则返回新对象。

到目前为止,一切都很好......现在我的问题; 我创建了两个单独的应用程序(应用程序 A 和应用程序 B)来测试 Azure 缓存机制。两个应用程序都在两个不同的(物理)位置上运行,因此它们都有自己的本地缓存,但它们都使用相同的分布式缓存。

在使本地缓存失效的过程中是否确实发生了某些变化?我测试了以下场景,发现本地缓存是自动更新的:

  • 应用 A 使用键“CacheTest”将值“123”存储在分布式缓存中
  • 应用 B 使用 dataCache.Get(...) 方法检索在本地缓存中找不到的键“CacheTest”的对象,因此从分布式缓存中检索它并返回值为“123”的对象。
  • 应用 A 将键为“CacheTest”的对象更改为值“456”
  • 应用 B 使用 datacache.Get(...) 方法(再次)检索对象。因为对象应该在本地缓存中,所以我期望值“123”,但它返回新值“456”!

这有多奇怪?最近 Azure 缓存有什么变化吗?是的...我确定我已打开本地缓存,是的,我已将本地缓存的超时设置为 3600 秒(1 小时)。

有人可以确认 Azure 缓存已更改吗?

为尼克编辑:所以你的意思是我在荷兰微软网站上找到的下一行代码是无稽之谈?当本地缓存自动更新时,无需调用“GetIfNewer”方法: http: //www.dotnetmag.nl/Artikel/1478/Windows-Azure-AppFabric-Caching

0 投票
2 回答
2955 浏览

algorithm - 一致性哈希有什么缺点吗?

诚然,一致性哈希是分布式缓存应用程序中广泛使用的技术。当节点数量动态变化时,它提供了一个很好的解决方案。并且当虚拟节点合并时,负载均衡问题也将得到解决。

我只是想知道这种技术有什么缺点或限制吗?

谢谢!

0 投票
1 回答
977 浏览

jakarta-ee - Ehcache RMI 复制在带有 tomcat 的 Linux 上不起作用,但在 Windows 上工作正常?

我们已经在 Linux 上的两个系统上安装了一个服务器的两个实例,这是一个 Web 应用程序,例如 SampleWebApp。我们已经配置了 ehcache 来缓存本地数据,还配置了一个默认的 RMI 复制来将在 Server1 上完成的更改复制到 Server2。复制在 Windows 环境下工作正常,但在 Linux 环境下不工作。即使没有打印错误,它也会默默地失败。

在 ehcache.xml 文件中完成的配置如下 -

没有安装可以阻止复制的防火墙,因此防火墙不是它失败的原因。还检查端口是否打开。分配的端口 50000 被打开,Ehcache 监听这个端口。问题是如果缓存中有更新,则不会复制此更改。

对此的任何建议或澄清将不胜感激。

谢谢,奇迹!

0 投票
1 回答
1353 浏览

c# - 解决 appfabric 问题所需的帮助

我的应用程序在 Windows Web 5 服务器的生产 Web 场中将 AppFabric 用于我们的分布式缓存模型。该应用程序是一个 .net4 c# Web 应用程序。我们在使用 AppFabric 时遇到了一些问题,并且对此类设置有一些疑问。我们遇到的主要问题是,如果重新启动 web 5 服务器中的一个,其他服务器上的站点也会在短时间内关闭,并且 appfabric 异常会出现在我们的事件日志中,如下所示:

  • 消息:错误代码:子状态:暂时失败。请稍后重试。
  • 错误代码:子状态:引用的区域不存在。使用 CreateRegion API 修复错误。

我们有一个缓存提供程序包装类,它创建 datacachefactory 对象等,并用作 Web 应用程序和 appfabric 之间的中介。这是一个单例类,因此在该类的 Init 上只创建了一个 datacachefactory 对象实例。

上面的第二个错误我相信我已经找到了原因,在我们的代码中,该区域是在 Init 上创建的,即在开始时,但是如果一个节点从包含其内存中的区域的集群中出来,那么上面错误是结果。为了解决这个问题,应该尝试在每个请求 appfabric 上创建该区域 - 但只有在它不存在时才创建它 - 这听起来正确吗?

关于另一个错误,我相信它可能取决于配置。这是集群配置 xml 文件:

注意:我们设置了多个缓存,因为我们有多个使用 appfabric 的应用程序,并且看到它们都存在相同的问题。

这是每个服务器上应用程序中的 web.config 条目:

有人看到上面的问题吗?如您所见,我们有 3 个主要主机和 2 个辅助主机。

我对此提出的一些问题是:

  • 我读过有关拥有本地缓存​​的信息 - 这有什么技术优势?IE。这是否会为每个节点提供数据的本地副本。
  • 关于端口的最佳实践是什么?上述端口是否正确,或者是否会与使用的相同端口发生冲突?
  • 3 个主要主机和 2 个辅助主机,这是推荐的拆分吗?这是否意味着有3个数据副本?

当我们重新启动服务器时,我们会尝试从不同时重新启动主要主机。

感谢您对此的任何反馈!

0 投票
1 回答
658 浏览

c# - 通知本地缓存缓存集群的变化

我在我的 c# 应用程序中使用 appfabric 缓存。我启用了本地缓存。

当我从我的缓存集群中添加、删除、更新或删除一个项目时,我想通过我的 c# 代码发送一个通知,说明这种情况已经发生。这可能吗?如果可以,它是如何实现的?

我正在考虑在我的应用程序的 web.config 上设置它以轮询以查找缓存集群的更新,但我担心这可能会出现性能问题,因此我想在我的代码中包含通知的触发器。

0 投票
0 回答
459 浏览

c# - 服务器集群中的 appfabric 性能

我目前正在分布式 Web 服务器环境中使用 appfabric,其中 appfabric 用作分布式缓存机制。

我已经将 appfabric 设置为在 4 个带有 .net Web 应用程序的 Web 服务器上运行 - appfabric 是它的缓存机制。它最近在这些服务器上上线,但遇到了问题。我发现,对于每个盒子上的站点 iis 工作进程,内存在短时间内从 200K 不断增加到超过 1000K,直到它被回收。我根据集群中缓存的项目启用了本地缓存超时 1 小时。启用了高可用性,带有 3 个主要主机的 xml 集群配置设置。

为了解决这个问题,短期内是将缓存时间减少到 5 分钟并禁用本地缓存。这导致工作进程内存没有达到与以前相同的水平,但随着时间的推移仍略有增加。平均缓存大约 10,000 个项目,对象的大小从字符串到 dto 对象不等。

我有一些关于 appfabric 的问题需要帮助:

本地缓存反序列化对象是否存储在工作进程内存中?或者本地缓存存储在什么内存中?

我在某处读过但不明白,当一个项目从缓存中删除时,密钥会在缓存中保留一段时间。那是对的吗?

集群中的其中一台服务器是虚拟服务器,在此也看到了相同的行为。我应该查看与虚拟服务器 appfabric 设置相关的任何内容吗?目前它与其他缓存主机设置相同但不是引导主机?

我担心这个问题可能与缓存中对象的大小有关,这可能吗?是缓存中项目的大小还是它们的数量妨碍了appfabric缓存性能?

在我调整我的应用程序和设置以从中获得最佳性能时,我将不胜感激任何帮助我的帮助。

0 投票
1 回答
865 浏览

c# - AppFabric 缓存服务器复制

经过一番谷歌搜索后,我发现我要问的问题并不多。

是否可以让 AppFabric 跨不同服务器复制缓存?(就像共享缓存说它可以..)。

我正在尝试指定一个新应用程序,该应用程序可能具有分布式缓存的可能性,但显然现在知道我们能做什么和不能做什么会有所帮助。

拥有一个缓存集群目前不是一个选项,所以让所有服务器都知道彼此的缓存将是一个主要的好处(对于冗余也是如此)。

另外-在站点注释上,您是否必须在 web.config 的基础上单独指定每个服务器?或者只是引用“一个集群”。

我知道有一个复制端口——但互联网上什么都没有!

任何帮助将不胜感激!

0 投票
1 回答
1390 浏览

spring - Caching entities using Spring-Integration framework and apache Camel

I'm browsing Integration frameworks to choose the best one for my integration problem. one thing that I want to know is caching and distributed caching for example using Web Service for communications, supported or not ? and if it does, how ?

in Pro Spring Integration CHAPTER 16 ■ SCALING YOUR SPRING INTEGRATION APPLICATION page 544, they talk about some caching strategy but they didn't say how to implement them using Spring-integration ? also they talk about message caching somewhere I want to know is there a caching solution for entities between multiple machine ?