问题标签 [ignite]

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 回答
945 浏览

java - 如何使 Ignite 像使用 TcpDiscoveryMulticastIpFinder 一样使用 TcpDiscoveryVmIpFinder 进行非阻塞行为?

背景

  • 我有一个基于弹簧的网络应用程序。
  • 在本地开发机器上我有 2 个运行相同应用程序的 tomcat 实例 - 这样我测试网络场节点如何相互通信
  • 我使用 Jelastic 云进行应用部署
  • 在 Jelastic 它不是作为网络农场运行,而是使用滚动更新机制(在AppV1运行NodeA并处理用户请求时,我启动AppV2@NodeB,预热并将用户请求重定向到它。目标是让NodeB复制所有会话NodeA

意图

  • 当前发布版本使用基于 NodeJS 的第三个服务器作为节点间 MessageBus 的快捷方式。但最近我发现了 Ignite,并认为减少平台(nodejs)的数量并在 Java 中获取所有内容会很棒。
  • 所以我用 Ignite 消息代替了基于 NodeJS 的消息。Ignite 使用 Spring XML 配置和初始化org.apache.ignite.IgniteSpringBean
  • 在本地运行我的应用程序时,TcpDiscoveryMulticastIpFinder它可以完美运行。NodeA即使没有开始也NodeB开始。当我启动NodeB它时,它顺利加入集群,节点相互连接并完美通信。这里最重要的是我可以随时启动和停止节点,并且使用 Ignite 消息传递进行非阻塞无错误操作。

问题

  • 但是在 Jelastic 上我没有多播,所以我必须明确定义 IP 地址列表(使用TcpDiscoveryVmIpFinder),这没关系 - 我有每个节点的静态主机名。但是现在NodeA开始时它会阻塞,直到它连接到NodeB. 如果NodeB不存在整个应用程序崩溃(部署失败)。

问题是 如何使它在场景中工作

  1. TcpDiscoveryVmIpFinder用来
  2. NodeA开始(虽然NodeB没有开始)
  3. 期望:NodeA正确运行任何时间(当然我不能向遥控器发送消息,因为没有连接遥控器 - 没关系)
  4. 随时NodeB开始
  5. 期望:NodeANodeB相互发现并相互通信(主要用于会话复制和其他消息)
  6. NodeA停止
  7. 期望:NodeB继续正常运行服务用户请求
  8. 现在 switch:NodeA变为NodeB,反之亦然;从第 3 步开始重复
0 投票
1 回答
590 浏览

java - Apache 为缓存事件点燃单个缓存(映射)事件注册

我正在寻找一种使用 ignite 注册单个缓存的缓存事件的方法。

可以使用此代码注册所有点燃环境的放置事件;

但由于性能原因,我只想为特定的地图(缓存)注册缓存事件。否则,我将不得不检查每个事件的缓存名称,这可能会导致系统负载大量事务。

感谢您的任何帮助和指导。

0 投票
1 回答
558 浏览

c# - .net 在与 .net 运行时相同的机器上点燃分布式缓存?

我之前在一个java项目中使用了ignite,但从未接触过基础设施/架构设置......

现在我有一个 .net 项目,我认为非常需要分布式内存缓存,我正在转向 apacheignite-net。.net 项目是一组后端服务(wcf 和 amqp)。这些服务可以水平扩展:我可以使用这些服务添加额外的服务器以获得更高的吞吐量。

但我需要关于 ignite 部署/基础设施以及 .net 的建议/指针: - 我无法添加额外的/专用服务器进行缓存:所以我正在考虑将我的 .net 服务和 apacheignite-net 放在同一个盒子上。
- 我需要缓存的对象(现在每个请求都从数据库中寻找它们)不是那么大,但我不需要缓存所有对象:所以是通读/驱逐策略的组合?

我的问题是:将用于 ignite 的 JVM 和这些 .net 服务放在同一个盒子上是正常/安全的事情吗?我阅读了性能提示,但仍然寻求更聪明/有经验的人的意见。我总是可以为这些服务器添加更多内存,但内核不多:这些 .net 服务不会消耗所有提供的 cpu,它们由 RDBMS 支持,如果需要,我可以要求更多的内存。

0 投票
1 回答
1875 浏览

ignite - **在 Apache Ignite 中插入自定义序列化程序**

在 Apache Ignite 中插入自定义序列化程序

我试图在 Binary Configuration bean 中添加 Kyro Serializer,但在运行时它给了我一个类类型转换错误。

我的代码是

错误日志是

在挖掘 Apache Ignite 提供的 BinarySerializer 时,得出的结论是,必须为序列化器编写自定义实现作为其他插件序列化器来实现它。

Optimized Marshaller 有什么好处?

0 投票
1 回答
462 浏览

ignite - Apache Ignite Cache API 中的 Prepared Statement 支持

IgniteCache API 中是否支持像 Prepared 语句这样的工具,以避免每次都进行查询解析?我看到为此提出了一个 Jira 问题,它说它在版本 1.5.0.final 中得到解决, https: //issues.apache.org/jira/browse/IGNITE-1856 ,但我找不到任何文档为此在 Apache Ignite 站点中。我知道我们可以通过 JDBC Connection 连接来使用准备好的语句,但这不适合我的用例。

我的代码如下所示,此查询将使用不同的参数一次又一次地调用,

0 投票
2 回答
1434 浏览

java - IGNITE 缓存错误

我们正在使用 Apache Ignite 进行缓存,在测试期间我遇到了这个错误

java.lang.IllegalStateException:缓存已关闭或销毁

我们有一个嵌入了 IGNITE 的 Spring Restful 客户端。调用来更新和从缓存中删除。

发生的步骤如下

  1. Ignite 服务器的一个实例正在运行。
  2. 一个在不同服务器上运行的带有 Ignite Embedded 的 Restful 客户端实例。
  3. 杀死了 Ignite 服务器实例,客户端仍在运行
  4. 点燃服务器重新启动。
  5. 客户端将值放入缓存的任何尝试都会导致上述异常。
  6. 如果客户端重新启动,一切正常

有人可以对为什么会发生这种情况提出一些见解。我是否必须处理所有节点离开并手动驱逐缓存或其他东西的事件。

需要任何帮助

0 投票
1 回答
554 浏览

ignite - 对缓存的增量操作

尝试对基本基本类型以及对象执行增量操作时出错

错误堆栈跟踪如下

cache.ROCCacheTest$$Lambda$9/1985869725 at org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1618) at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.cacheException(IgniteCacheProxy .java:1841) 在 org.apache.ignite.internal.processors.cache.IgniteCacheProxy.invokeAll(IgniteCacheProxy.java:1544) 在 cache.ROCCache.invokeAll(ROCCache.java:129) 在 cache.ROCCacheTest.testDeltaOnAllListOfPojoFields(ROCCacheTest. java:529) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang .reflect.Method.invoke(Method.java:497) 在 org.junit.runners.model.FrameworkMethod$1。runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org .junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 在 org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) 在 org.springframework.test.context .junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner .java:325) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner。runChild(SpringJUnit4ClassRunner.java:254) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org. junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 org.springframework.test.context 的 org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)。 junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal。 junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner。 RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( RemoteTestRunner.java:192)由:org.apache.ignite.internal.processors.cache.GridCacheIoManager 类 org.apache.ignite.IgniteCheckedException:cache.ROCCacheTest$$Lambda$9/1985869725 引起。unmarshall(GridCacheIoManager.java:1044) 在 org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:275) 在 org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager. java:204) 在 org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java: 163) 在 org.apache.ignite.internal.managers.communication.GridIoManager.access$1600(GridIoManager.java:103) 在 org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:821) 在org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:784) 在 java.util。concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 原因:类org.apache.ignite.binary.BinaryInvalidTypeException: cache.ROCCacheTest$$Lambda$9/1985869725 at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:492) at org.apache.ignite.internal.binary .BinaryContext.descriptorForTypeId(BinaryContext.java:489) 在 org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1443) 在 org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java :292) 在 org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal(BinaryMarshaller.java:112)在 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateRequest.finishUnmarshal(GridNearAtomicUpdateRequest. java:621) at org.apache.ignite.internal.processors.cache.GridCacheIoManager.unmarshall(GridCacheIoManager.java:1038) ... 10 更多原因:java.lang.ClassNotFoundException: cache.ROCCacheTest$$Lambda$9/1985869725在 java.lang.Class.forName0(Native Method) 在 java.lang.Class.forName(Class.java:340) 在 org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8172) 在 org .apache.ignite.internal.MarshallerContextAdapter.getClass(MarshallerContextAdapter.java:185) 在 org.apache.ignite.internal.binary。BinaryContext.descriptorForTypeId(BinaryContext.java:483) ... 17 更多

早些时候,所有测试都运行良好。在尝试设置客户端和服务器后,测试失败,现在当相同的两个系统用作服务器或配置处于仅服务器模式时,测试失败。

配置如下

0 投票
1 回答
65 浏览

ignite - Deltas 和动态 Pojos

我有 3 个问题:

1.Ignite中的Delta操作基本上是用来避免重新发送整个对象的开销,但是在对pojo执行Delta时,会再次构建Binary对象。不是陈词滥调吗?我同意减少许多其他间接费用。

2.如果我们考虑使用 Replication 的客户端服务器模式,Deltas 是如何通过副本传输的?

3.当尝试使用 SQL 查询访问缓存时,可以做些什么来实现动态 POJO ?

0 投票
1 回答
518 浏览

ignite - 更改持久存储

我已在配置中将持久性存储从 H2 更改为 MYSQL,但 ignite 实例没有启动。

控制台只给我这些

考虑内存H2数据库中的默认值

在配置中没有任何地方将定义数据源的 bean 用作参考。如果我错了,请纠正我,但据我了解,缓存存储的作用只是将数据加载到缓存中和从缓存中加载数据,并且不处理选择持久存储.ignite 如何理解持久化存储?

0 投票
1 回答
1378 浏览

ignite - Apache Ignite 异常 - 无法初始化缓存存储(未提供数据源)

我正在尝试为我的 ignite 缓存实现持久存储,我正在使用 CacheJdbcPojoStoreFactory,我的缓存存储工厂初始化看起来像这样

我的缓存实现如下所示

(我传递了正确的查询实体和 JdbcTypes ,为简单起见,我没有在此处显示该代码)但是当我运行此代码时,我得到以下堆栈跟踪

当我调试时,我可以看到我的数据源参数在 cacheJdbcdPojoStorefactory 对象中正确设置。我哪里错了?