我创建了一个 Hazelcast 设置,其中一个节点运行着 hazelcast 实例。我的客户端应用程序正在使用客户端配置从 Hazelcast 实例读取缓存。我想在我的客户端应用程序中实现 Near 缓存以将其用作本地缓存。你能给我一个例子,让我看看它是如何在java中使用的。我目前的代码是这样的
Hazel 铸造缓存节点
public class HazelCastNode1 {
public static void main(String[] args) {
Config cfg = new Config();
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
Map<Integer, String> citiesMap = instance.getMap("Cities");
for(int i = 0; i < 100000; i++){
citiesMap.put(i, "Vienna"+i);
}
System.out.println("Map Size:" + citiesMap.size());
}
}
Run Code Online (Sandbox Code Playgroud)
客户代码
public class ReadClient {
public static void main(String[] args) {
ClientConfig clientConfig = new ClientConfig();
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
IMap<Integer, String> cumap = client.getMap("Cities");
System.out.println(cumap.size());
}
} …Run Code Online (Sandbox Code Playgroud) 我想评估Hazecast与Ehcache分布式缓存.
首先,如何将它们与具有标准dao/service层的Spring + Hibernate项目一起使用.Ehcache具有非常优雅且易于使用的注释,例如:
@Cacheable(cacheName = "test", keyGenerator = @KeyGenerator (
name = "SpELCacheKeyGenerator", properties = @Property(value = "#key.string(#args[0])", name = "expression")))
Run Code Online (Sandbox Code Playgroud)
Hazelcast有什么类似的东西吗?我没有找到任何关于如何以实时/ dtos方式使用Hazelcast的信息.
我们在一个环中有 N 个具有基本一致性散列的缓存节点。
问题:
非常感谢。
在 memcached 概述中
它说:
Memcached servers are generally unaware of each other. There is no crosstalk, no syncronization, no broadcasting. The lack of interconnections means adding more servers will usually add more capacity as you expect. There might be exceptions to this rule, but they are exceptions and carefully regarded.
Run Code Online (Sandbox Code Playgroud)
我在想它如何成为一个分布式系统,而不需要在集群中的节点之间进行同步?如果我从程序写入节点 1 上的缓存,并且下一个请求发送到节点 2,那么我正在从陈旧的缓存中读取数据。
假设我有 2 台使用 Hazelcasts 分布式缓存的服务器。如果在服务器 #1 上,我将 2 个项目存储在该分布式缓存中的地图中。其中一个将保存在本地备份中,另一个将存储在其他服务器 Hazelcast 实例的备份中(如果不正确,请纠正我)。
我的问题是,如果我尝试从缓存中检索第二个项目(存储在服务器 #2 的备份中),将进行 TCP 调用来检索该数据。这比调用数据库快多少?
我一直在研究是否可以在外部Dbs(如Redis,MongoDb或其他高度可扩展的工具)中缓存.NET会话状态.
我的研究结果是,尽管MongoDB有更多的集成来完成这类工作,但似乎Redis的性能要高得多,而且还有更多的选项(密钥过期,集合等)可供使用.
还有另一个名为ServiceStack的框架,它有一个RedisClient的实现,但是恕我直言的实现方式比我想要的更加耦合.
public override object OnGet(CachedOrders request)
{
var cacheKey = "some_unique_key_for_order";
return base.RequestContext.ToOptimizedResultUsingCache(this.CacheClient, cacheKey, () =>
{
//This delegate will be executed if the cache doesn't have an item
//with the provided key
//Return here your response DTO
//It will be cached automatically
});
}
Run Code Online (Sandbox Code Playgroud)
所以在这项研究之后,我想知道您的意见,以及您是否在任何应用程序中实现了这种缓存.你能分享一下你的经历吗?
谢谢!
我想让我对hadoop分布式缓存有所了解.我知道当我们将文件添加到分布式缓存时,文件会被加载到集群中每个节点的磁盘上.
那么如何将文件数据传输到集群中的所有节点.是通过网络吗?如果是这样,它会不会对网络造成压力?
我有以下想法,他们是否正确?
如果文件很大,不会有网络拥塞?
如果节点数量很大,即使文件大小适中,文件的复制和传输到所有节点,都不会导致网络拥塞和内存限制?
请帮助我理解这些概念.
谢谢!!!
我是AppFabric的新手,我正在为生产环境评估分布式缓存解决方案,而且我在使用Asp.net MVC和WebApi的微软商店,我们没有使用Windows Azure.
在我的本地计算机上设置AppFabric时,有一个创建数据库或使用xml的步骤,我想在这里理解这个概念.AppFabri是否依赖于数据源(db或xml文件)来保持?如果是这样,这不是一个潜在的瓶颈吗?
此外,现在正在其生产服务器上使用AppFabric的任何人都可以评论他们使用它的经验吗?任何陷阱或陷阱?
谢谢,真的很感激!
我们有一个系统,在50个服务器上使用相同的数据集(键值对).此数据集的更新次数约为每小时1000次,必须在这50台服务器之间进行复制.我们有一个主系统接收这些更新,并负责将这些更新传播到其他服务器.目前,我们每小时以文件的形式将整个数据集(而不是增量更新)同步到所有服务器.然后将该数据加载到不可变的Koloboke映射中.每个服务器每秒处理大约25000个请求,每个请求对此映射执行30次查找.在这些服务器上接收的请求的平均响应延迟最大约为3毫秒,因此内存中的koloboke映射可以很好地维持这个响应时间.
但是,我们当前在服务器之间同步此数据的系统会导致问题:
1)大多数情况下,这些关键数据的同步在其中一台服务器上失败,导致收入损失
2)由于这些数据存储在内存中,因此它不是持久性的,我们需要在每次服务器重新启动时或每次每小时更新时重新加载这些数据,这会影响应用程序的启动时间.
为了提高效率,我在Koloboke库中探索了Redis,Chronicle Maps和Mutable地图.但是我遇到了所有这些问题的限制:
Redis:Redis支持复制和持久性.但是,在使用其基准测试实用程序时,我发现它可以支持的查找次数仅略高于我们的平均用例(0.8-1.1百万个请求,而不是75万,这是我们每秒的查找次数).此外,通过网络调用redis会损害我们3ms的平均响应时间.
Chronicle Maps:在进一步探索这个问题时,我发现Chronicle Maps支持复制,持久性并且每秒可以服务多达3000万个请求.起初看起来它似乎是一个不错的选择,但后来我发现它们不适用于多图,我们在应用程序中生成它们.此外,它们将数据存储在堆外,因此数据反序列化的成本会导致性能损失.
Koloboke:它的性能很好,可以满足我们的使用需求,但不支持复制和持久性.
我找不到任何支持我们所有用例的东西.我正在寻找这个社区的建议,这些建议可以帮助我们有效地构建这个系统,而不会对性能产生任何严重影 任何有关这方面的帮助将非常感谢!谢谢!
https://ringpop.readthedocs.org/en/latest/
据我了解,可以在某些库例程中实现分片,并且应用程序仅与库链接。如果该库是RPC客户端,则可以从服务器端实时查询分片。因此,即使有一个新分区,它对应用程序也是透明的。
Ringpop是基于SWIM成员身份协议的应用程序层分片策略。我想知道应用程序层的主要优势是什么?
在系统层中分片又是另一面呢?
谢谢!
database distributed distributed-computing distributed-caching