问题标签 [distributed-cache]
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.
asp.net - 您在运行 ASP.NET 的网络场中使用什么进行分布式缓存?
我很好奇其他人在这种情况下使用的是什么。我知道一些可用的选项,例如 memcached 端口或 ScaleOutSoftware。memcached 端口似乎没有被积极处理(如果我错了,请纠正我)。ScaleOutSoftware 对我来说太贵了(我不怀疑它值得)。这并不是说我不想听到人们使用 memcached 或 ScaleOutSoftware。在这一点上,我只是陈述我“知道”的内容。
所以我的问题基本上是这样的:对于那些积极使用分布式缓存的人,你在使用什么,你对它是否满意,我应该注意什么?
我很快就会搬到两台服务器上……两者都将在同一个位置。我相当大量地(但小心地)使用缓存来减少我的数据库服务器上的负载。
编辑:我下载了 Scaleout Software 的解决方案。我已经为它编写了代码,它似乎工作得很好。我只需要决定我的钱包是否愿意为此付出现金。:) 任何人对 ScaleoutSoftware 有好的或坏的体验吗?
再次编辑:我问这个已经有一段时间了?还有什么想法吗?我们最终从 ScaleOutSoftware 购买了解决方案,并且对它感到满意,但我很好奇其他人在做什么。
.net - MS Velocity 准备好投入生产了吗?
我想知道是否有人在生产环境中尝试过速度。它现在是 CTP2 版本,我们正在考虑使用它。有人试过吗?如果是,这是一次积极的经历吗?
distributed-cache - 分布式缓存中的“真实”对象引用?
我个人致力于 .net 分布式缓存解决方案,但我认为这个问题在所有平台上都很有趣。
是否有一个分布式缓存解决方案(或通用策略)允许在缓存中存储对象同时保持它们之间引用的完整性?
举例说明 - 假设我有一个Foo foo
引用一个对象的对象Bar bar
,并且还有一个引用Foo foo2
该对象的对象Bar bar
。如果我加载foo
到缓存中,副本将bar
与它一起存储。如果我也加载foo2
到缓存中,bar
则会同时存储一个单独的副本。如果我foo.bar
在缓存中更改,更改不会影响foo2.bar
:(
是否有现有的分布式缓存解决方案可以让我在维护引用的同时加载foo
,foo2
并bar
进入缓存?foo.bar
foo2.bar
distributed-cache - 存在哪些可以处理本地语言对象的共享状态分布式系统?
据我所知,有兵马俑和磁悬浮。还有其他人吗?
java - Oracle Coherence 中将序列化文件作为数据存储的分布式缓存
很奇怪,但我正在研究 Oracle Coherence 作为分布式缓存的替代品。我的主要问题是我们的应用程序中没有分布式缓存。这是我最关心的问题。这就是我想要实现的。所以,假设我拿起一台机器并开始一个新的(第 3 次)读取过程,它将能够连接到缓存并监听缓存,并且将拥有一整套缓存三倍(截至目前它是重复的)现在,从普通人的角度来看,这也是浪费。缓存的大小为 2 GB,并且不会分散它对我们的限制。
那就是把我带到 Coheremce。
但是现在,我们也没有数据库作为持久存储。我们将存档过程作为我们的持久存储。(90 天的数据)好的,现在将它乘以大约 2 GB * 90 的 soem(这是我们想要保留的最低限度)。
Coherence 作为解决方案的初步/中间分析。
一个(据说)绝妙的想法掠过我的脑海。为什么不把它作为我的分布式缓存的持久存储。Oracle Coherence 是否支持这一点。我也将摆脱归档基础设施(我讨厌守护进程归档过程)。由于某些原因,我不想去数据库替换那些平面文件。
怎么说?,Coherence 能成为我的救星吗?任何其他稳定的替代品也是如此。(一致性是大家伙强加给我的,仅供参考)
java - 有没有类似于跳过列表的分布式缓存解决方案?
我想知道是否有任何开源(或专有)框架可以模拟并发优先级队列,该队列允许偷看,并以良好的性能从任意索引中删除。
现在我ConcurrentSkipList
在 JDK 中使用 available,但基本上我需要在多个 JVM 之间共享它。
最困难的部分是,当我轮询队列时,我正在做这样的事情:
一些分布式缓存允许查询,但是这个操作是性能密集型的,我不确定查询缓存是否是一个好主意。
有人听说过这样的事情吗?
c# - 是否有适用于 Windows 的具有高可用性选项的可查询分布式缓存?
我们正在尝试将某种分布式缓存集成到我们的系统中。我们有两个主要要求:
- 高可用性,即自动将数据复制到镜像机器,这样如果一台机器出现故障,数据就在身边。
- 缓存数据的可搜索性/可搜索性,即需要进行范围搜索。
- 可选:返回存储数据的完整快照。
- 可选:定期保存缓存数据的能力。
到目前为止,我们只有 SharedCache 作为候选,因为它至少允许使用正则表达式进行搜索。不过,这本质上很慢。SharedCache 不支持高可用性。Windows App Fabric 提供了该功能,但据我所知没有搜索(如果我错了,那真是太棒了)。
我有哪些选择?那是过分的要求?我应该放弃并考虑某种定制解决方案吗?
c# - Memcached:客户端缓存的更新通知
我们以 Memcached 的 .NET 客户端为例:
我们知道,如果我们想把一些数据放到缓存服务器上,我们调用一些 API,例如Cache.Add(string key, object data)
,memeched 客户端将序列化data
然后发送到缓存服务器。如果data
是一个复杂的对象(有一个大的对象图),序列化过程可能会很慢。所以,我尝试使用 2 级缓存:分布式缓存和内存缓存。
应用程序代码将始终向内存缓存请求缓存数据。如果 In-Memory Cache 没有缓存数据,它将向缓存服务器请求缓存数据。性能可以受益于 In-Memory 缓存的使用,因为 In-Memory 缓存不需要序列化操作,更接近应用程序。
但是,有一个同步问题。如果一台 Web 服务器修改了数据,它将更新数据库、其内存缓存和分布式缓存。但是其他 Web 服务器不会收到有关此“更新”事件的通知,因此它们的 In-Memory Cache 不会被更新。
所以问题是:当一个 Web 服务器更新数据时,如何通知其他 Web 服务器(以便它们可以更新其内存缓存)?谢谢!
顺便说一句:我想以“推送同步”方式同步缓存数据,也就是说,缓存数据只有在更改时才会更新。因为在我的应用程序中,有很多读取,而只有一些写入。
hibernate - 如何使用分布式 Ehcache 运行具有相同数据库模式的多个 Hibernate SessionFactories
我们有一个包含 n 个客户端(目前为 55 个)的系统,其中每个客户端都有自己的数据库,所有这些数据库都具有完全相同的模式。我们正在运行由分布式 ehcache 支持的休眠 3.6.1。这已通过 SessionFactoryService 使用每个数据库的 SessionFactory 实现,该 SessionFactoryService 在运行时“懒惰地”为每个 jvm 的每个客户端创建一个 SessionFactory(存储在 HashMap 中),因此我们正在运行一组应用程序管理的 SessionFactories。有一个基本的休眠配置文件,其余设置在创建时以编程方式完成。我们的存储库(或者更常见的 DAO)可以通过 SessionFactoryService 访问 SessionFactory。我们充分利用了由分布式 SingltonEhcacheRegionFactory 支持的休眠二级缓存。因为我们在每个 jvm 运行 n 个 SessionFactories,所以我们不想要一个 NON SingltonEhacheRegionFactory(即每个 SessionFactory 有一个 CacheManager),因为在尝试保持缓存之间的同步时,SessionFactories 之间会有太多的 jvm 间通信。所以我们想要的只是跨服务器的通信,而不是服务器内的通信,这是通过 SingltonEhcacheRegionFactory 实现的。
现在,这里是乐趣的开始。使用上述设置,将存在缓存冲突,因为无法保证唯一键作为数据库模式,因此支持它们的实体对象在 SessionFactories 中是相同的。为了使它们独一无二,我们通过上面的编程配置步骤将字段 hibernate.cache.region_pre-fix 设置为每个 SessionFactory 的唯一值。这满足了 Hibernate 对二级缓存的看法,但底层的单例 ehcache 现在存在问题。它找不到正确的配置,因为 ehache.xml 配置文件中指定的配置在缓存名称上没有缓存前缀(也不能,因为每个前缀的每个缓存配置都必须有一个重复条目,其中有n个)。这会导致以下错误:
10:37:38,389 WARN AbstractEhcacheRegionFactory:201 - 在 Hibernate 配置中找不到 TransactionManagerLookup,XA 缓存将参与两阶段提交!10:37:39,675 WARN AbstractEhcacheRegionFactory:143 - 找不到名为 [some_prefix.adc] 的缓存的特定 ehcache 配置;使用默认值。10:37:40,328 WARN AbstractEhcacheRegionFactory:143 - 找不到名为 [some_prefix.org.hibernate.cache.UpdateTimestampsCache] 的缓存的特定 ehcache 配置;使用默认值。10:37:40,331 WARN AbstractEhcacheRegionFactory:143 - 找不到名为 [some_prefix.org.hibernate.cache.StandardQueryCache] 的缓存的特定 ehcache 配置;使用默认值。
那么问题来了,我们如何才能在每个 jvm 环境中使用分布式单例 ehcache 来完成多个 SessionFactory?有没有办法将 ehcache 配置为区域前缀感知?我们实施的解决方案充其量只是hacky。我们已经实现了自己的 hibernate.cache.region.factory_class,它扩展了 SingltonEhcacheRegionFactory(并删除了 hibernate 缓存区域前缀配置)。我们的实现所做的只是拦截对底层 Ehcache 的方法调用,并为所有用于缓存操作的键附加一个前缀,从而防止缓存冲突。我们想要一个更“开箱即用”的解决方案,出于显而易见的原因,尽管它有效,但我们实施的方案并不理想。我已经阅读了我可能找到的关于此事的所有内容,但没有 t 找到了一个解决方案,该解决方案使用分布式二级缓存使用相同的模式(最重要的是)处理多个 SessionFactories。任何想法、解决方案或建议将不胜感激。如果有人有解决需求的好方法,我什至对完全不同的设计持开放态度。提前致谢!