问题标签 [gemfire]
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.
spring - 我想在 JPA+Spring+EclipseLink 的应用程序中使用 gemfire
我正在从事与拍卖相关的项目。Spring+JPA+EclipseLink 我必须使用 Gemfire 作为缓存。所以我想知道这是否可能?如果可能的话,我需要添加哪些配置?即要添加的 JAR 文件,要设置的环境变量,要在 PERSISTENT.xml 中添加的属性等。如果您有任何工作示例,这将是一个很大的帮助。
提前致谢, Tushar Dodia
licensing - GemFire alternatives and a license question
I've just started looking at gemfire. I'm really impressed actually. I'm a little confused by its licensing, there seems to be some indication that some of it is open source? Does anyone have any clear idea? I'm loathed to talk to their sales people. If not, are there any open source alternatives? I can think of a few technologies which offer the same features but not as a whole.
java - Gemfire 区域同步
我正在使用 gemfire,目前有一个客户端和一个服务器。现在,服务器动态地在一个区域中创建一些子区域并将一些对象放在那里。我正在尝试使用客户端检索对象,但看不到对象或子区域。如何同步区域?还有什么我可以做的吗?
caching - 访问 gemfire 缓存中的动态区域
我在 gemfire 分布式缓存系统中使用动态区域工厂动态创建一些区域。尽管这些区域存在于服务器缓存中(它们在我打印现有区域时出现),但如果我尝试使用 subRegion 方法获取它们,我会得到一个空指针作为回报。
动态区域是否以其他方式访问,或者问题可能是什么?
serialization - GemFire:在 Java 中序列化对象,然后在 c# 中反序列化它们
为了跨越Java端的语言边界,被序列化的类需要实现DataSerializable接口;为了让c#中的反序列化器知道它是什么类,我们需要注册一个classID。按照这个例子,我用 Java 编写我的类,如下所示:
它看起来不错,但是当我运行它时,我得到了这个异常:
[警告 2012/03/30 15:06:00.239 JST tid=0x1] 在池中注册实例时出错:com.gemstone.gemfire.cache.client.ServerOperationException: : 在 com.gemstone.gemfire.cache 执行远程 registerInstantiators 时。 client.internal.AbstractOp.processAck(AbstractOp.java:247) 在 com.gemstone.gemfire.cache.client.internal.RegisterInstantiatorsOp$RegisterInstantiatorsOpImpl.processResponse(RegisterInstantiatorsOp.java:76) 在 com.gemstone.gemfire.cache.client。 internal.AbstractOp.attemptReadResponse(AbstractOp.java:163) 在 com.gemstone.gemfire.cache.client.internal.AbstractOp.attempt(AbstractOp.java:363) 在 com.gemstone.gemfire.cache.client.internal.ConnectionImpl。在 com.gemstone.gemfire.cache.client.internal.pooling.PooledConnection.execute 执行(ConnectionImpl.java:229)(PooledConnection.java:第321章.gemstone.gemfire.cache.client.internal.PoolImpl.execute(PoolImpl.java:624) 在 com.gemstone.gemfire.cache.client.internal.RegisterInstantiatorsOp.execute(RegisterInstantiatorsOp.java:39) 在 com.gemstone.gemfire .internal.cache.PoolManagerImpl.allPoolsRegisterInstantiator(PoolManagerImpl.java:216) 在 com.gemstone.gemfire.internal.InternalInstantiator.sendRegistrationMessageToServers(InternalInstantiator.java:188) 在 com.gemstone.gemfire.internal.InternalInstantiator._register(InternalInstantiator.java :143) 在 com.gemstone.gemfire.internal.InternalInstantiator。在 Stuff.(Stuff.java) 的 com.gemstone.gemfire.Instantiator.register(Instantiator.java:168) 注册(InternalInstantiator.java:71)
引起:java.lang.ClassNotFoundException: Stuff$1
我不知道为什么,有没有经验的人可以提供帮助?提前致谢!
caching - 具有嵌入式和分布式缓存/数据网格的数据感知负载平衡
对不起,我是负载平衡的初学者。
在分布式环境中,我们越来越倾向于将处理(map/reduce)发送到数据,以便结果在本地计算然后聚合。
我想做的事情适用于分区/分布式数据,而不是复制。遵循同样的原则,我希望能够在缓存用户数据的服务器上发送用户请求。
当使用嵌入式缓存或数据网格来获得低响应时间时,当数据集很大时,我们倾向于避免复制并使用分布式/分区缓存。
分区算法通常是基于散列的,并且允许有副本来处理服务器故障。
最后,用户数据通常托管在 3 个服务器(1 个主副本和 2 个副本)上
在本地缓存未命中时,缓存通常能够搜索其他缓存对等点上的条目。这工作正常,但需要网络访问。我想要一个负载平衡策略来避免这种无用的网络调用。
我想知道的是:是否有可能拥有一个知道缓存分区机制的负载均衡器,以便在我们需要数据时它总是转发到具有本地副本的网络服务器之一?
例如,我有一个请求 www.mywebsite.com/user=387 负载均衡器将检查 387 userId 并知道该用户存储在服务器 1、6 和 12 中。因此他可以轮询其中一个或其他战略。
如果没有通用解决方案,是否有允许定义自定义路由策略的开源或商业、软件或硬件负载平衡器?
请求中提取多少数据会减慢负载均衡器的速度?与例如循环策略相比,提取 url 参数(例如在我的 user=387 示例中)并遵循一些规则转到正确的网络服务器的成本是多少?
在缓存供应商之上是否有一个抽象库,以便我们可以轻松检索分区数据并将其提供给负载均衡器?
谢谢!
java - 在 Gemfire 缓存中写入对象作为键
我试图将一个对象作为 Gemfire 区域内的键。
它失败并出现以下错误 -
com.gemstone.gemfire.cache.client.ServerOperationException:com.gemstone.gemfire.pdx.PdxSerializationException:无法创建类“TestClass”的实例
请建议在存储在 gemfire 缓存区域时需要用作键的对象中需要实现的内容。
PS我已将gemfire的自动序列化属性设置为true,并且我在我的TestClass中覆盖了equals和hashcode,它有一个默认的空构造函数。
gemfire - Gemfire 地区放
我有两个不同的线程,其中一个将信息放入 Gemfire 区域,另一个从同一个 Gemfire 区域读取并删除相同的信息。问题是:如果第二个线程忙,第一个线程继续将信息放入 Gemfire 区域。
需要什么 - 如果达到区域中的某些项目限制,则阻止第一个线程。可以手动实现此功能,但 Gemfire 中可能已经存在相同的机制?
caching - 即使在更新的情况下也会触发 afterCreate 事件 -Gemfire 中的事件如何工作?
客户端缓存配置 -
对于上面的客户端配置,我使用了一个 CacheListener 来监听这个缓存“测试”上的事件。
我面临的问题甚至是更新事件,即在缓存中为相同的键放置不同的值,触发 afterCreate 事件。
IE
和
两者都在 Listener 中生成 afterCreateEvent。
已编辑
让我更清楚地了解我想要在这里实现的目标。我希望在创建条目时通知我的客户端,该条目是否已经存在于缓存服务器中。
例如
如果某个区域的缓存服务器上已经存在条目 [Test,Value],则在进行 put [Test,Value1] 时,客户端应该知道这是一个更新,并且无论该条目是否存在于客户端缓存中,都应该执行此操作.
我试过这样的东西-
进行上述更改后,它会检测更新事件,但前提是同一个客户端刚刚创建了一个条目并尝试更新它,而不是早期创建的条目。
如果我遗漏了什么,请帮助并告诉我。
xml - gemfire 本地区域创建
我的 cache.xml 如下:
我看到如下异常
schema_reference.4:未能读取架构文档“http://www.springframework.org/schema/gemfire/spring-gemfire-1.2.xsd”,因为 1) 找不到该文档;2) 文件无法读取;3) 文档的根元素不是 .
cvc-complex-type.2.4.c:匹配通配符是严格的,但找不到元素“gfe:cache”的声明。
我尝试更改为不同版本的 xsd,如下所示,但没有运气,我仍然看到问题。
http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
和
http://www.springframework.org/schema/gemfire/spring-gemfire-1.1.xsd
和
http://www.springframework.org/schema/gemfire/spring-gemfire-1.2.xsd
经过以上所有尝试,当我更改为 1.1 版本时,我发现它现在引发了另一个问题
cvc-complex-type.2.4.c:匹配通配符是严格的,但找不到元素“gfe:local-region”的声明。
谁能帮我解决这个问题?