- 浏览: 124458 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
102111:
这个问题怎么解决的?我也遇到了同样的问题。SB boss要在同 ...
最近这个项目 用到Tomcat7,郁闷!!! -
暗蓝幽谷:
不是什么高阶之类,标题党
高阶Java-Java注解 Java annotation 使用详解【转载的】 -
暗蓝幽谷:
《Think in Java 第四版》里面多东西,而且是最基础 ...
高阶Java-Java注解 Java annotation 使用详解【转载的】 -
bcw104:
32位机最大数据集文件2G
MongoDb can't map file memory - mongo requires 64 bit build for larger datasets -
javaOpen:
taoge2121 写道怎么使用啊?
跟使用 ExtJS 分页 ...
ExtJS 分页扩展
JGroups 简介、适用场合、配置、程序例子Demo等完全使用指南
目前项目中在克服JGroups初期使用的困难之后,已经使用比较稳定了。感觉比较烦琐和容易出错的还是JGroups配置。感觉中文的资源较少,现将自己总结的经验总结如下
【转】 http://hi.baidu.com/jabber/blog/item/7e879852a23efd0f0cf3e3ea.html JGroups 适合使用场合 服务器集群cluster、多服务器通讯、服务器replication(复制)等,分布式cache缓存 JGroups 简介 JGroups是一个基于Java语言的提供可靠多播(组播)的开发工具包。在IP Multicast基础上提供可靠服务,也可以构建在TCP或者WAN上。主要是由Bela Ban开发,属于JBoss.org,在JBoss的网站也有一些相关文档。目前在 SourceForge上还是比较活跃,经常保持更新。 JGroups 配置 PING: 发现初始成员 MERGE2: 将网络层切分的包重新合并。 FD_SOCK: Failure Dectection 错误检测,基于TCP FD:Failure Dectection 错误检测,基于心跳 VERIFY_SUSPECT: 检查貌似失败的节点 pbcast.NAKACK: 应答,提供可靠传输 UNICAST: 可靠的UNICAST pbcast.STABLE: 计算广播信息是否稳定 VIEW_SYNC: 定期广播view(成员名单) pbcast.GMS: Group membership, 处理joins/leaves/crashes等 FC: 流量控制 FRAG2:Fragmentation layer,分包,将大的数据包分拆成适合网络层传输 以上一些是比较重要的配置,基本上不能少。如果要深入研究可以在 org.jgroups.protocols 里面查看源代码 JGroups使用例子, JGroups demo, Tim的hello world例子 Timreceiver.java import org.jgroups.tests.perf.Receiver; import org.jgroups.tests.perf.Transport; import org.jgroups.util.Util; public class TimReceiver implements Receiver { private Transport transport = null; public static void main(String[] args) { TimReceiver t = new TimReceiver(); try { int sendMsgCount = 5000; int msgSize = 1000; t.start(); t.sendMessages(sendMsgCount, msgSize); System.out.println("########## Begin to recv..."); Thread.currentThread().join(); } catch (Exception e) { e.printStackTrace(); } finally { if (t != null) { t.stop(); } } } public void start() throws Exception { transport = (Transport) new TimTransport(); transport.create(null); transport.setReceiver(this); transport.start(); } public void stop() { if (transport != null) { transport.stop(); transport.destroy(); } } private int count = 0; public void receive(Object sender, byte[] data) { System.out.print("."); if (++count == 5000) { System.out.println("\r\nRECV DONE."); System.exit(0); } } private void sendMessages(int count, int msgSize) throws Exception { byte[] buf = new byte[msgSize]; for (int k = 0; k < msgSize; k++) buf[k] = 'T'; System.out.println("-- sending " + count + " " + Util.printBytes(msgSize) + " messages"); for (int i = 0; i < count; i++) { transport.send(null, buf); } System.out.println("######### send complete"); } } TimTransport.java import java.util.Map; import java.util.Properties; import org.jgroups.Address; import org.jgroups.JChannel; import org.jgroups.Message; import org.jgroups.ReceiverAdapter; import org.jgroups.tests.perf.Receiver; import org.jgroups.tests.perf.Transport; public class TimTransport extends ReceiverAdapter implements Transport{ private JChannel channel = null; private String groupName = "TimDemo"; private Receiver receiver = null; String PROTOCOL_STACK_UDP1 = "UDP(bind_addr=192.168.100.59"; String PROTOCOL_STACK_UDP2 = ";mcast_port=8888"; String PROTOCOL_STACK_UDP3 = ";mcast_addr=225.1.1.1"; String PROTOCOL_STACK_UDP4 = ";tos=8;loopback=false;max_bundle_size=64000;" + "use_incoming_packet_handler=true;use_outgoing_packet_handler=false;ip_ttl=2;enable_bundling=true):" + "PING:MERGE2:FD_SOCK:FD:VERIFY_SUSPECT:" +"pbcast.NAKACK(gc_lag=50;max_xmit_size=50000;use_mcast_xmit=false;" + "retransmit_timeout=300,600,1200,2400,4800;discard_delivered_msgs=true):" +"UNICAST:pbcast.STABLE:VIEW_SYNC:" +"pbcast.GMS(print_local_addr=false;join_timeout=3000;" + "join_retry_timeout=2000;" + "shun=true;view_bundling=true):" +"FC(max_credits=2000000;min_threshold=0.10):FRAG2(frag_size=50000)"; public Object getLocalAddress() { return channel != null ? channel.getLocalAddress() : null; } public void start() throws Exception { channel.connect(groupName); } public void stop() { if (channel != null) { channel.shutdown(); } } public void destroy() { if (channel != null) { channel.close(); channel = null; } } public void setReceiver(Receiver r) { this.receiver = r; } public Map dumpStats() { return channel != null ? channel.dumpStats() : null; } public void send(Object destination, byte[] payload) throws Exception { byte[] tmp = new byte[payload.length]; System.arraycopy(payload, 0, tmp, 0, payload.length); Message msg = null; msg = new Message((Address) destination, null, tmp); if (channel != null) { channel.send(msg); } } public void receive(Message msg) { Address sender = msg.getSrc(); byte[] payload = msg.getBuffer(); if (receiver != null) { try { receiver.receive(sender, payload); } catch (Throwable tt) { tt.printStackTrace(); } } } public void create(Properties config) throws Exception { String PROTOCOL_STACK = PROTOCOL_STACK_UDP1 + PROTOCOL_STACK_UDP2 + PROTOCOL_STACK_UDP3 + PROTOCOL_STACK_UDP4; channel = new JChannel(PROTOCOL_STACK); channel.setReceiver(this); } public void send(Object destination, byte[] payload, boolean oob) throws Exception { send(destination, payload); } } JGroups 下载 download http://www.jgroups.org/ |
发表评论
-
Lombok 消除Java的冗长
2010-05-06 12:12 1337【转至】http://www.blogjava.net/men ... -
Swing Jtable 学习
2010-04-28 20:53 1565一.创建表格控件的各种方式:1) 调用无参构造函数. ... -
高阶Java-Java注解 Java annotation 使用详解【转载的】
2010-04-16 22:22 8572来越的开源框架都提供了“元数据”支持了。为了不outdate ... -
log4j配置祥解
2010-04-09 11:03 760[转] http://www.blogjava.net/kit ... -
Java Concurrency(java 并发)
2010-04-04 15:31 1341【转】http://www.blogjava.net/vinc ... -
Jbpm4常见概念
2010-03-25 09:55 803[color=green][size=medium] [ ... -
全文检索
2010-03-25 09:53 1343【转】http://luyucs.blog.163 ... -
在eclipse项目中使用maven管理依赖
2010-01-10 21:20 3279概览: 如何导入maven项目 ... -
JRebal(原名JavaRebel)破解小记
2009-10-22 13:13 3011原文地址:http://www.blogjava.net/us ... -
perf4j 全局性能
2009-10-21 16:47 958http://perf4j.codehaus.org/devg ... -
java泛型
2009-09-27 13:08 906在已发布的Java1.4中在核心代码库中增加了许多新的API( ... -
JPA
2009-02-09 10:49 19631.JPA概述 JPA(Java Pe ... -
EJB3.0开发指南之多对多和一对一
2009-02-09 10:47 1987学生和老师就是多对多的关系。一个学生有多个老师,一个老师教多个 ... -
java笔试题
2009-02-01 10:29 39241。 java.lang.String类是fina ... -
多表联结查询怎样得到重复f01Id数据的最后一条记录
2007-11-23 11:30 1724select a.f01Id,a.costCenter,a. ... -
java中的rmi技术
2007-10-05 15:56 1604java远程方法调用
相关推荐
- `jgroups-all.jar`:核心JGroups功能库,包括demo和junit应用程序。如果需要更小的JAR包,可以下载源代码并执行“jar”目标,生成大约1MB大小的`jgroups-core.jar`。 - `log4j.jar`(可选):日志库,JGroups也...
Ehcache是一款高效、流行的Java缓存库,它允许应用程序快速访问经常使用的数据,从而提高性能和响应速度。在分布式环境中,为了实现数据共享和高可用性,Ehcache提供了集群功能。而Jgroups则是Java中一个强大的集群...
### 关于JGroups 2.5教程:安装与开发简易应用程序 #### 安装与配置JGroups **JGroups**是一款高性能、可扩展且高度可靠的群集通信库,旨在为分布式系统提供消息传递功能。本教程将深入探讨如何安装配置JGroups,...
JGroups使用灵活的协议栈,这也是JGroups最强大(the most powerful)的功能,它允许开发人员配置协议栈来适用于他们自己的应用需求和网络特征。这样做的好处在于,开发人员只需要关注他们使用到的协议。通过组合和...
总结来说,这个 JGroups 聊天小程序示例展示了如何使用 JGroups 建立分布式通信,包括节点之间的消息传递、视图管理和状态同步。通过这种方式,开发者可以构建出一个健壮的、容错的聊天系统,支持多个节点之间的实时...
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的协议栈可以根据不同的需求进行定制,例如,如果选择使用IP Multicast作为传输协议,可以在协议栈中添加NAKACK协议以防止报文丢失和重复,添加TOTAL协议以保证报文的顺序,添加Group Membership Service ...
jgroups-2.2.7.jar jgroups-2.2.7.jar
jgroups.part1
介绍部分摘自XMPP Jabber即时通讯开发实践 http://hi.baidu.com/jabber/blog/item/7e879852a23efd0f0cf3e3ea.html<br>JGroups 适合使用场合 服务器集群cluster、多服务器通讯、服务器replication(复制)等,...
JGroups提供了丰富的API供开发者使用,如Channel接口用于创建和配置通信通道,View接口表示组成员的视图,Message类用于发送和接收消息。apidoc目录下的文档详细介绍了这些API的使用方法和示例。 七、HTML格式的...
《深入解析JGroups开源框架:基于belaban-JGroups-19d7183源代码》 JGroups是一个用于构建高可用性集群的Java框架,它提供了可靠的消息传递、组成员管理和故障检测等功能,广泛应用于分布式系统中。本文将基于bela...
jgroups-raft 项目是 JGroups 框架对 Raft 的实现。Maven:<groupId>org.jgroups <artifactId>jgroups-raft <version>0.2</version>Raft 是一个容易理解的共识算法。在容错和性能方面它相当于 Paxos(Google 的一致...
JGroups是一个用Java编程语言编写的开源库,专注于实现基于IP组播的高效、可配置的组通信协议栈。它为分布式系统提供了一种健壮且灵活的方式来实现节点间的通信,是构建大规模分布式应用的基础组件。在本文中,我们...
其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组成员管理上进行扩展。其结构上设计灵活,提供了一种...
JGroups完全用Java编写,因此可以无缝集成到任何Java应用中,无论是在企业级应用服务器、分布式数据库还是微服务架构中。 总的来说,JGroups是Java开发人员构建分布式系统时的强大工具,它简化了集群通信的复杂性,...
JGroup是当前被广泛使用的可靠组间通信的工具之一...但是JGroup在UDP方式的基础上,增加了协议栈的配置,通过配置上层的协议,可以保证消息的重发,大包体的分解(同时保证消息包体顺序),组内机器的状态检测等功能。
Jgroups 中的 UNICAST3 协议详解 Jgroups 是一种基于 IP 多播的可靠的组播中间件,UNICAST3 协议是 Jgroups 中的一种单播协议,旨在保持单播和 UNICAST2 的正面特征,而修正负面特征。 UNICAST3 协议的主要特点是...