问题标签 [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.
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
不存在整个应用程序崩溃(部署失败)。
问题是 如何使它在场景中工作
TcpDiscoveryVmIpFinder
用来NodeA
开始(虽然NodeB
没有开始)- 期望:
NodeA
正确运行任何时间(当然我不能向遥控器发送消息,因为没有连接遥控器 - 没关系) - 随时
NodeB
开始 - 期望:
NodeA
并NodeB
相互发现并相互通信(主要用于会话复制和其他消息) NodeA
停止- 期望:
NodeB
继续正常运行服务用户请求 - 现在 switch:
NodeA
变为NodeB
,反之亦然;从第 3 步开始重复
java - Apache 为缓存事件点燃单个缓存(映射)事件注册
我正在寻找一种使用 ignite 注册单个缓存的缓存事件的方法。
可以使用此代码注册所有点燃环境的放置事件;
但由于性能原因,我只想为特定的地图(缓存)注册缓存事件。否则,我将不得不检查每个事件的缓存名称,这可能会导致系统负载大量事务。
感谢您的任何帮助和指导。
c# - .net 在与 .net 运行时相同的机器上点燃分布式缓存?
我之前在一个java项目中使用了ignite,但从未接触过基础设施/架构设置......
现在我有一个 .net 项目,我认为非常需要分布式内存缓存,我正在转向 apacheignite-net。.net 项目是一组后端服务(wcf 和 amqp)。这些服务可以水平扩展:我可以使用这些服务添加额外的服务器以获得更高的吞吐量。
但我需要关于 ignite 部署/基础设施以及 .net 的建议/指针: - 我无法添加额外的/专用服务器进行缓存:所以我正在考虑将我的 .net 服务和 apacheignite-net 放在同一个盒子上。
- 我需要缓存的对象(现在每个请求都从数据库中寻找它们)不是那么大,但我不需要缓存所有对象:所以是通读/驱逐策略的组合?
我的问题是:将用于 ignite 的 JVM 和这些 .net 服务放在同一个盒子上是正常/安全的事情吗?我阅读了性能提示,但仍然寻求更聪明/有经验的人的意见。我总是可以为这些服务器添加更多内存,但内核不多:这些 .net 服务不会消耗所有提供的 cpu,它们由 RDBMS 支持,如果需要,我可以要求更多的内存。
ignite - **在 Apache Ignite 中插入自定义序列化程序**
在 Apache Ignite 中插入自定义序列化程序
我试图在 Binary Configuration bean 中添加 Kyro Serializer,但在运行时它给了我一个类类型转换错误。
我的代码是
错误日志是
在挖掘 Apache Ignite 提供的 BinarySerializer 时,得出的结论是,必须为序列化器编写自定义实现作为其他插件序列化器来实现它。
Optimized Marshaller 有什么好处?
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 连接来使用准备好的语句,但这不适合我的用例。
我的代码如下所示,此查询将使用不同的参数一次又一次地调用,
java - IGNITE 缓存错误
我们正在使用 Apache Ignite 进行缓存,在测试期间我遇到了这个错误
java.lang.IllegalStateException:缓存已关闭或销毁
我们有一个嵌入了 IGNITE 的 Spring Restful 客户端。调用来更新和从缓存中删除。
发生的步骤如下
- Ignite 服务器的一个实例正在运行。
- 一个在不同服务器上运行的带有 Ignite Embedded 的 Restful 客户端实例。
- 杀死了 Ignite 服务器实例,客户端仍在运行
- 点燃服务器重新启动。
- 客户端将值放入缓存的任何尝试都会导致上述异常。
- 如果客户端重新启动,一切正常
有人可以对为什么会发生这种情况提出一些见解。我是否必须处理所有节点离开并手动驱逐缓存或其他东西的事件。
需要任何帮助
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 更多
早些时候,所有测试都运行良好。在尝试设置客户端和服务器后,测试失败,现在当相同的两个系统用作服务器或配置处于仅服务器模式时,测试失败。
配置如下
ignite - Deltas 和动态 Pojos
我有 3 个问题:
1.Ignite中的Delta操作基本上是用来避免重新发送整个对象的开销,但是在对pojo执行Delta时,会再次构建Binary对象。不是陈词滥调吗?我同意减少许多其他间接费用。
2.如果我们考虑使用 Replication 的客户端服务器模式,Deltas 是如何通过副本传输的?
3.当尝试使用 SQL 查询访问缓存时,可以做些什么来实现动态 POJO ?
ignite - 更改持久存储
我已在配置中将持久性存储从 H2 更改为 MYSQL,但 ignite 实例没有启动。
控制台只给我这些
考虑内存H2数据库中的默认值
在配置中没有任何地方将定义数据源的 bean 用作参考。如果我错了,请纠正我,但据我了解,缓存存储的作用只是将数据加载到缓存中和从缓存中加载数据,并且不处理选择持久存储.ignite 如何理解持久化存储?
ignite - Apache Ignite 异常 - 无法初始化缓存存储(未提供数据源)
我正在尝试为我的 ignite 缓存实现持久存储,我正在使用 CacheJdbcPojoStoreFactory,我的缓存存储工厂初始化看起来像这样
我的缓存实现如下所示
(我传递了正确的查询实体和 JdbcTypes ,为简单起见,我没有在此处显示该代码)但是当我运行此代码时,我得到以下堆栈跟踪
当我调试时,我可以看到我的数据源参数在 cacheJdbcdPojoStorefactory 对象中正确设置。我哪里错了?