标签: distributed-caching

任何允许标记内容的分布式缓存系统?

我想知道是否有像memcached,velocity或sharedcache这样的分布式缓存系统允许我用不仅仅是它的名称标记内容,或者可以将项目与彼此关联,所以如果我使一个项目的缓存无效它也会使相关项目无效.

例如.如果我有两个引用相同数据并且数据发生变化的页面,我希望两个引用页面的缓存无效.

  • 或者这是否是其中一个项目的补充?:)

编辑:我在asp.net上

tagging memcached distributed-caching appfabric

5
推荐指数
1
解决办法
455
查看次数

分布式缓存技术

我对满足以下要求的开源消息传递和/或分布式缓存技术感兴趣.

  • 多个负载均衡的Java Web应用程序实例(可能在Amazon EC2上)
    • 随着时间的推移,实例的数量可能会随着缩放而变化.
  • 当请求带有id FOO时,事件会在内存中缓存一段时间.
    • 缓存事件的持续时间在请求有效负载中指定,并在请求之间变化.
    • 持续时间相对较小(大约几分钟).
    • 不需要持久性.在罕见的情况下,发生了戏剧性的事情并且服务器必须重新启动,它可以忘记过去的事件.
  • 有关请求的信息需要传播到所有服务器实例
    • 信息的传播不得显着影响服务器的性能,尤其是响应延迟.它应该与请求处理异步.但是,它应该相当快并且可以扩展到大量请求.
    • 不同的服务器实例可以不同步.即,可接受的是,在一段短时间内(大约几秒),服务器实例2不知道FOO在服务器实例1上发生,直到该信息传播到它.

任何想法,将不胜感激.如果任何解决方案需要特定的配置/定制以满足要求,请提及我需要做的事情.

编辑我并不是说暗示当前的答案是不相关的,但我的问题并不明确.请不要只指向阳光下的每个MQ和JSR-107库.只有您有理由相信我的要求.

java performance distributed caching distributed-caching

5
推荐指数
1
解决办法
1803
查看次数

Ehcache多个JVM - opensource?

嘿,我现在正在运行tomcat的春天ehcache.我有几个Web服务器运行他们自己的ehcache实例,我现在想要移动到共享/分布式缓存.我们不希望使用商业许可证,直到我们对其性能感到满意,并在我们扩展时需要更多正式支持.

令我困惑的是ehcache/teracotta网站.所有的文档似乎都是为了运行带有teracotta服务器的ehcache缓存,我可以让我的web服务器通过更新我的ehcache配置文件来连接...但是看起来这些指令是用于使用商业版本吗?

我现在真的不需要集群(并且可以理解这是否是企业许可证的一部分)但我以为我可以设置一个开源分布式缓存实例?有没有人有如何链接?或者只是关于如何从嵌入式实例迁移到共享实例的一般说明?

java caching ehcache distributed-caching

5
推荐指数
1
解决办法
3131
查看次数

使用Windows Server AppFabric缓存的分布式锁服务

我有一个在Windows Server AppFabric SDK中找到的Microsoft.ApplicationServer.Caching.DataCache对象的扩展方法,如下所示:

using System;
using System.Collections.Generic;
using Microsoft.ApplicationServer.Caching;

namespace Caching
{
    public static class CacheExtensions
    {
        private static Dictionary<string, object> locks = new Dictionary<string, object>();

        public static T Fetch<T>(this DataCache @this, string key, Func<T> func)
        {
            return @this.Fetch(key, func, TimeSpan.FromSeconds(30));
        }

        public static T Fetch<T>(this DataCache @this, string key, Func<T> func, TimeSpan timeout)
        {
            var result = @this.Get(key);

            if (result == null)
            {
                lock (GetLock(key))
                {
                    result = @this.Get(key);

                    if (result == null)
                    {
                        result = func();

                        if …
Run Code Online (Sandbox Code Playgroud)

caching distributed-caching appfabric

5
推荐指数
1
解决办法
2521
查看次数

分布式分析系统数据一致性的体系结构设计

我正在重构一个将进行大量计算的分析系统,我需要一些关于可能的架构设计的想法,以解决我面临的数据一致性问题.

当前架构

我有一个基于队列的系统,其中不同的请求应用程序创建最终由工作者使用的消息.

每个" 请求应用程序 "将大型计算细分为较小的部分,这些部分将被发送到队列并由工作人员处理.

当所有部分都完成后,原始的"请求应用程序"将合并结果.

此外,工作者使用来自集中式数据库(SQL Server)的信息来处理请求(重要:工作人员不会更改数据库上的任何数据,只会消耗它).

当前架构

问题

好.到现在为止还挺好.当我们包含更新数据库信息的Web服务时,就会出现问题.这可能在任何时候发生,但至关重要的是,源自相同"请求应用程序"的每个"大计算"在数据库上看到相同的数据.

例如:

  1. 应用A生成消息A1和A2,将其发送到队列
  2. 工人W1选择消息A1进行处理.
  3. Web服务器更新数据库,从状态S0更改为S1.
  4. 工人W2拿起消息A2进行处理

我不能让工人W2使用数据库的状态S1.为了使整个计算保持一致,它应该使用先前的S0状态.

思考

  1. 一种锁定模式,用于防止Web服务器在工作者消耗数据时更改数据库.

    • 缺点:锁定可能会长时间打开,因为不同的"请求应用程序"的计算形式可能会重叠(A1,B1,A2,B2,C1,B3等).
  2. 在数据库和worker(通过req.app控制db缓存的服务器)之间创建新层

    • 缺点:添加另一个层可能会带来很大的开销(可能?),这是很多工作,因为我将不得不重写工作者的持久性(很多代码).

我正在等待第二个解决方案,但对此并不十分自信.

有什么好主意吗?我设计错了,还是错过了什么?

OBS:

  • 这是一个巨大的2层遗留系统(在C#中),我们正在尝试尽可能少地努力发展成更具可扩展性的解决方案.
  • 每个worker都可能在不同的服务器上运行.

architecture sql-server distributed message-queue distributed-caching

5
推荐指数
1
解决办法
359
查看次数

AWS Elastic Beanstalk缓存?

我正在考虑在AWS上托管一个标准的Java Web应用程序,而新的Elastic Beanstalk(http://aws.amazon.com/elasticbeanstalk/)似乎拥有我们想要的大部分内容.我无法弄清楚的一件事是如何进行分布式缓存.AWS似乎不允许新节点的多播发现,因此我不确定自动扩展过程启动的新节点应该如何集成到现有的分布式缓存中.任何建议/最佳实践表示赞赏.

更新:理想情况下,这将是每个应用程序服务器实例的本地缓存.最佳案例场景是hibernate 2级缓存配置,如ehcache或terracota.

java distributed-caching amazon-web-services cloud-hosting

4
推荐指数
1
解决办法
3965
查看次数

erlang:分布式哈希表?

在Erlang中是否有任何分布式哈希表实现?我在网上搜索并发现了一些研究论文,但我没有找到成熟的实施方案.

erlang hashtable distributed-caching riak

4
推荐指数
1
解决办法
1349
查看次数

分布式缓存和Tachyon有什么区别?

分布式缓存是一种存储常见请求并支持快速检索的方法.

Tachyon是一个以内存为中心的分布式存储文件系统,可避免进入磁盘以加载经常读取的数据集.

这两者有什么不同?

distributed-cache distributed-caching apache-spark alluxio

4
推荐指数
2
解决办法
2440
查看次数

就其线程模型而言,hazelcast如何执行地图输入驱逐?

我知道<min-eviction-check-millis>在hazelcast配置中定义了在检查此映射的分区是否可逐出之前应该通过的最短时间(以毫秒为单位).因此,在每个配置的间隔期间,将根据配置的驱逐策略在地图中执行驱逐.我有以下与此领域相关的问题.

Q1.驱逐操作是否在操作线程上运行?

Q2.驱逐操作会锁定它正在处理的整个分区吗?

Q3.如果我要遵循100毫秒的默认值(我相信这是一个非常小的值),我是否需要预期会有任何性能损失.

Q4.在以下情景中,驱逐行动的频率如何?

<map name="employees">
    <in-memory-format>BINARY</in-memory-format>
    <backup-count>1</backup-count>
    <max-idle-seconds>1800</max-idle-seconds>
    <eviction-policy>NONE</eviction-policy>
    <time-to-live-seconds>0</time-to-live-seconds>
    <min-eviction-check-millis>1000</min-eviction-check-millis>
    <max-size>0</max-size>
    <eviction-percentage>0</eviction-percentage>
    <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>

</map>
Run Code Online (Sandbox Code Playgroud)

请注意,虽然没有配置驱逐策略和百分比,但最大空闲时间设置为1800秒.

上述问题的答案将帮助我在大规模部署中对这些配置所使用的值做出明智的决定.

java distributed-cache distributed-caching hazelcast hazelcast-imap

4
推荐指数
1
解决办法
1772
查看次数

在 .Net Core 3.1 中使 IDistributedCache 线程安全

我需要IDistributedCache在我的应用程序中使用它,它可以是MemoryDistributedCacheRedisCache作为底层实现。我的理解是这些不是线程安全的,所以我使用ReaderWriterLockSlim.

ReaderWriterLockSlim允许多个线程进行读取或独占访问进行写入。现在我想知道它是否适合这项工作,MemoryDistributedCache以及RedisCache阅读方法是否是线程安全的。

至于整体解决方案 - 我知道从像 Redis 这样的分布式缓存中存储和读取值需要时间。但我没有太多选择,因为我存储的值获取和管理的速度更慢。

这是片段:

...
        public async Task<byte[]> GetAsync(string key, CancellationToken token = new CancellationToken())
        {
            _cacheLock.EnterReadLock();
            try
            {
                return await _cache.GetAsync(GetCacheKey(key), token);
            }
            finally
            {
                _cacheLock.ExitReadLock();
            }
        }

        public async Task SetAsync(string key, byte[] value, DistributedCacheEntryOptions options, CancellationToken token = new CancellationToken())
        {
            _cacheLock.EnterWriteLock();
            try
            {
                await _cache.SetAsync(GetCacheKey(key), value, options, token);
            }
            finally
            {
                _cacheLock.ExitWriteLock();
            }
        }

        public async Task RemoveAsync(string key, …
Run Code Online (Sandbox Code Playgroud)

c# caching distributed-caching .net-core

4
推荐指数
1
解决办法
2334
查看次数