JGroups实现了组通讯的组件。
JGroups使用场合:
服务器集群
多服务器通讯
服务器复制
分布式缓存
更多JGroups信息可以参考whitesock的javaeye博客
无论是JGroups还是前面文章提到的ActiveMQ都是能够实现网络通信的。下面分享一个使用JGroups进行聊天的例子程序,大家感受下使用JGroups进行简单编程的例子
package ttstest;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import org.jgroups.JChannel;
import org.jgroups.Message;
import org.jgroups.ReceiverAdapter;
import org.jgroups.View;
import org.jgroups.util.Util;
public class SimpleChat {
private JChannel channel;
private List<String> state = new LinkedList<String>();
private String userName = System.getProperty("user.name", "guchao");
public void start() throws Exception {
channel = new JChannel("./conf/udp.xml");
channel.setReceiver(new ReceiverAdapter() {
//回调方法,用来接收消息Message
public void receive(Message msg) {
System.out.println(msg.getSrc() + ": " + msg.getObject());
synchronized(state) {
state.add((String)msg.getObject());
}
}
//回调方法,该方法能够得到新的view信息
public void viewAccepted(View view) {
System.out.println("view accepted: " + view);
}
public byte[] getState() {
synchronized(state) {
try {
return Util.objectToByteBuffer(state);
}
catch(Exception e) {
e.printStackTrace();
return null;
}
}
}
@SuppressWarnings("unchecked")
public void setState(byte[] new_state) {
try {
List<String> list=(List<String>)Util.objectFromByteBuffer(new_state);
synchronized(state) {
state.clear();
state.addAll(list);
}
System.out.println("received state (" + list.size() + " messages in chat history):");
for(String str: list) {
System.out.println(str);
}
}
catch(Exception e) {
e.printStackTrace();
}
}
});
channel.connect("ChatCluster");
channel.getState(null, 10000);
//
sendMessage();
//
channel.close();
}
private void sendMessage() throws Exception {
boolean succeed = false;
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(System.in));
while(true) {
System.out.print(">");
System.out.flush();
String line = br.readLine();
if(line != null && line.equals("exit")) {
break;
} else {
Message msg = new Message(null, null, "[" + userName + "]" + line);
channel.send(msg);
}
}
succeed = true;
} finally {
if(br != null) {
try {
br.close();
} catch (Exception e) {
if(succeed) {
throw e;
}
}
}
}
}
public static void main(String args[]) throws Exception {
new SimpleChat().start();
}
}
聪明的你应该可以发现,上面的这个例子通过jgroups发送消息的方式同步服务器的内存!!
分享到:
相关推荐
在Ehcache通过Jgroups进行集群配置时,首先需要理解Jgroups的配置文件——`jgroups.xml`。这个文件定义了集群中节点如何相互发现、通信以及故障检测的规则。配置文件中的关键元素包括: 1. **Transport**: 定义了...
JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 ...
JGroups集群技术概述 JGroups是一个用于建立可靠的组播通信的工具包,它提供了灵活的、可定制的协议栈,以满足不同的需求。JGroups支持多种传输协议,包括UDP、TCP和JMS等。在JGroups中,消息传输可以保证可靠性,...
JGroups - A Framework for Group Communication in Java ======================================================== March 3, 1998 Bela Ban 4114 Upson Hall Cornell University Ithaca, NY 14853 bba@...
《JGROUPS集群框架源码分析之消息发送、处理、接收》 JGROUPS是一款强大的开源通信框架,专为构建高可用性、高容错性的分布式系统而设计。它提供了集群内的消息传递功能,允许节点间可靠地交换信息。本文将深入探讨...
jgroups-raft 项目是 JGroups 框架对 Raft 的实现。Maven:<groupId>org.jgroups <artifactId>jgroups-raft <version>0.2</version>Raft 是一个容易理解的共识算法。在容错和性能方面它相当于 Paxos(Google 的一致...
此文档主要针对JGroups 2.X版本的官方帮助文档进行详细解读,旨在帮助开发者深入理解并有效地利用JGroups。 一、JGroups简介 JGroups的核心目标是确保在分布式环境中数据的一致性。它提供了一套完整的工具,用于...
Jgroups 中的 UNICAST3 协议详解 Jgroups 是一种基于 IP 多播的可靠的组播中间件,UNICAST3 协议是 Jgroups 中的一种单播协议,旨在保持单播和 UNICAST2 的正面特征,而修正负面特征。 UNICAST3 协议的主要特点是...
### JGroups教程:深入理解与应用 #### 一、安装JGroups JGroups是一款高性能、高可用性的集群通信中间件,适用于构建分布式系统。本文档将详细介绍如何安装配置JGroups,并编写一个简单的应用来演示其主要功能。 ...
Java多播通讯框架JGroups是Java开发者用于构建高可用、高性能和可伸缩的集群通信系统的重要工具。它提供了一套全面的协议栈,能够处理网络中的节点发现、消息传递、故障检测和恢复等问题,从而使得开发分布式应用变...
jgroups-2.2.7.jar jgroups-2.2.7.jar
JGroups(Java多播通讯框架)简介 JGroups是一个可靠的群组通讯Java工具包。它基于IP组播(IP multicast),但在可靠性,组成员管理上对它作了扩展。 JGroups的可靠性体现在: 1,对所有接收者的消息的无丢失传输...
《深入解析JGroups开源框架:基于belaban-JGroups-19d7183源代码》 JGroups是一个用于构建高可用性集群的Java框架,它提供了可靠的消息传递、组成员管理和故障检测等功能,广泛应用于分布式系统中。本文将基于bela...
JGroups是一个开源的纯java编写的可靠的群组通讯工具。其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组...
jgroups.part1
JGroups是一个开源的纯java编写的可靠的群组通讯工具。其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组...
jgroups-2.6.8.GA.jar jgroups-2.6.8.GA.jar
《JGroups:构建高效可靠的组通信系统》 JGroups是一个用Java编程语言编写的开源库,专注于实现基于IP组播的高效、可配置的组通信协议栈。它为分布式系统提供了一种健壮且灵活的方式来实现节点间的通信,是构建大...