我在多台机器上运行相同的服务器端应用程序.
我想提供一种方法来推动所有应用程序的更改.我对对象本身的状态/属性更改更感兴趣,而不是对文件的复制等.
所以我想象一个管理控制台,在那里我会更改一些属性,并让更改影响每个应用程序状态.
我目前正在研究JGroups,这是一个可靠的多播通信工具包.在这种情况下,每个应用程序将侦听同一个多播组,并且管理控制台将向组发送更改.
还有其他解决方案/技术吗?
JGroups似乎从90年代末开始存在.我们为什么在拥有JGroups时需要Netty?是因为JGroups是基于线程池而Netty是异步的吗?这是唯一的区别吗?
我正在做一个聊天项目。当我在 ide (netbeans) 中运行它时,它可以正常打开并且运行良好。但是当我从终端运行它时,我收到如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jgroups/Receiver
at com.mycompany.chatapp1.ChatWindow.<init>(ChatWindow.java:32)
at com.mycompany.chatapp1.Main.main(Main.java:10)
Caused by: java.lang.ClassNotFoundException: org.jgroups.Receiver
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
我通过命令运行它java -jar ChatApp1-1.0-SNAPSHOT.jar
这是我的依赖信息:
<dependencies>
<dependency>
<groupId>org.jgroups</groupId>
<artifactId>jgroups</artifactId>
<version>3.4.3.Final</version>
</dependency>
</dependencies>
可能出什么问题了?
我正在尝试使用共享的 Infinispan 缓存(异步复制)对一对服务器进行集群。一个总是成功启动,并在 JDBC 数据库中正确注册自己。当另一个启动时,它在数据库中正确注册,我看到它们之间有一堆喋喋不休,然后,在等待第二个服务器的响应时,我得到
`org.infinispan.commons.CacheException: Initial statue transfer timed out`
Run Code Online (Sandbox Code Playgroud)
我认为这只是配置问题,但我不确定如何调试我的配置问题。我花了几天时间配置和重新配置我的 Infinispan XML 和 JGroups.xml:
无限跨度:
<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:infinispan:config:6.0"
xsi:schemaLocation="urn:infinispan:config:6.0 http://www.infinispan.org/schemas/infinispan-config-6.0.xsd
urn:infinispan:config:remote:6.0 http://www.infinispan.org/schemas/infinispan-cachestore-remote-config-6.0.xsd"
xmlns:remote="urn:infinispan:config:remote:6.0"
>
<!-- *************************** -->
<!-- System-wide global settings -->
<!-- *************************** -->
<global>
<shutdown hookBehavior="DEFAULT"/>
<transport clusterName="DSLObjectCache">
<properties>
<property name="configurationFile" value="jgroups.xml"/>
</properties>
</transport>
<globalJmxStatistics enabled="false" cacheManagerName="Complex.com"/>
</global>
<namedCache name="ObjectCache">
<transaction transactionMode="TRANSACTIONAL" />
<locking
useLockStriping="false"
/>
<invocationBatching enabled="true"/>
<clustering mode="replication">
<async asyncMarshalling="true" useReplQueue="true" replQueueInterval="100" replQueueMaxElements="100"/>
<stateTransfer fetchInMemoryState="true" />
</clustering>
<eviction strategy="LIRS" maxEntries="500000"/>
<expiration …Run Code Online (Sandbox Code Playgroud) 我正在使用微服务,假设我有 3 个服务,它们都通过 JGroup UDP 通道相互连接(JGroups 可以在它们之间广播消息):
--- --- ---
| A | --msg--> | B || C |
--- --- ---
Run Code Online (Sandbox Code Playgroud)
如果我每个服务只有一个实例,那么一切都很好。但是,例如,如果我有两个 service 实例,C它们都会收到事件,并且它们都会运行自己的过程,结果将在数据库中复制(两次求和)。
--- --- --- ---
| A | --msg--> | B || C || C |
--- --- --- ---
Run Code Online (Sandbox Code Playgroud)
有没有办法管理这个?