-
JGroups UDP multicast 问题!15
请教一下大侠有关 JGroups UDP multicast的问题:
1. 发送端和接收端都必须要用JGroups才可以互相通讯吗, 如果发送端用JGroups, 接收端用普通JAVA API, 或者反过来的话, 可以通讯吗?(我测试的结果是不可以通讯, 不知道JGroups是不是像MQ那样, 发送端和接收端都得用它, 还是我测试不正确?)
2. 局域网内接收不到消息:
在一台机子上, 发送端用 JGroups UDP multicast 发送消息, 如果接收端也在同一台机子上, 则可以接收到消息. 如果发送端放在A机子上, 接收端放在B机子上(A和B都在同一局域网内), 则收不到消息, 为什么呢? (我用普通JAVA API写的发送端和接收端在局域网内通讯是没有问题的)(配置文件的内容在下面)
3. 消息丢包/重发的问题:
在消息发送频率高的情况下, 发送端发送的消息为msg1, msg2, msg3, msg4, msg5, msg6, msg7, msg8, msg9, msg10, msg11, 但是在接收端收到的消息可能为 msg3, msg3, msg3, msg5, msg5, msg7, msg7, msg9, msg9, msg11, msg11. 接收端收到的消息中, 有些重复, 有些丢失, 是不是配置方面的问题呢? (在消息发送频率比较高的情况下, 才会出现这个现象)
udp.xml配置文件如下:<UDP ip_mcast="true" bind_addr="127.0.0.1" mcast_addr="${jgroups.udp.mcast_addr:239.9.9.9}" mcast_port="${jgroups.udp.mcast_port:45588}" tos="8" ucast_recv_buf_size="20M" ucast_send_buf_size="640K" mcast_recv_buf_size="25M" mcast_send_buf_size="640K" loopback="true" discard_incompatible_packets="true" max_bundle_size="64K" max_bundle_timeout="30" ip_ttl="${jgroups.udp.ip_ttl:8}" enable_bundling="true" enable_diagnostics="true" thread_naming_pattern="cl" timer_type="new" timer.min_threads="4" timer.max_threads="10" timer.keep_alive_time="5000" timer.queue_max_size="500" timer.rejection_policy="abort" thread_pool.enabled="true" thread_pool.min_threads="10" thread_pool.max_threads="100" thread_pool.keep_alive_time="5000" thread_pool.queue_enabled="true" thread_pool.queue_max_size="50000" thread_pool.rejection_policy="discard" oob_thread_pool.enabled="true" oob_thread_pool.min_threads="5" oob_thread_pool.max_threads="100" oob_thread_pool.keep_alive_time="5000" oob_thread_pool.rejection_policy="Run"/> <PING timeout="2000" num_initial_members="100" break_on_coord_rsp="true" /> <MERGE2 max_interval="30000" min_interval="10000" merge_fast="false"/> <FD_SOCK/> <FD_ALL/> <VERIFY_SUSPECT timeout="1500" /> <BARRIER /> <pbcast.NAKACK exponential_backoff="300" xmit_stagger_timeout="200" use_mcast_xmit="true" discard_delivered_msgs="true"/> <UNICAST2 exponential_backoff="500"/> <pbcast.STABLE stability_delay="2000" desired_avg_gossip="60000" max_bytes="4M" cap="0.1"/> <pbcast.GMS print_local_addr="true" join_timeout="10000" view_bundling="true" max_bundling_time="1000" merge_timeout="5000" resume_task_timeout="15000" /> <UFC max_credits="4M" min_threshold="0.4"/> <MFC max_credits="4M" min_threshold="0.4"/> <FRAG2 frag_size="60K" /> <pbcast.STATE_TRANSFER />
发送端的主要代码:byte[] sentBytes = {xxxxxxx} // 生成发送字节数组的内容, 代码省略. JChannel channel = new JChannel(new File(PathUtils.find("conf/udp.xml"))); channel.connect("my_jgroups"); while (true) { channel.send(null, sentBytes); Thread.sleep(1000); }
接收端的主要代码:JChannel channel = new JChannel(new File(PathUtils.find("conf/udp.xml"))); channel.setReceiver(new ReceiverAdapter() { @Override public void receive(Message message) { System.out.println("received : " + new String(message.getBuffer())); } @Override public void viewAccepted(View view1) { System.out.println("received view : " + view1); } }); channel.connect("my_jgroups");
各路大侠, 神仙, Help!2012年6月11日 10:55
目前还没有答案
相关推荐
其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组成员管理上进行扩展。其结构上设计灵活,提供了一种...
JGroups的协议栈可以根据不同的需求进行定制,例如,如果选择使用IP Multicast作为传输协议,可以在协议栈中添加NAKACK协议以防止报文丢失和重复,添加TOTAL协议以保证报文的顺序,添加Group Membership Service ...
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是一款高性能、高可用性的集群通信中间件,适用于构建分布式系统。本文档将详细介绍如何安装配置JGroups,并编写一个简单的应用来演示其主要功能。 ...
1. **Transport**: 定义了节点间通信的协议和参数,例如UDP或TCP。在端口配置中,每个节点应使用不同的端口以避免冲突,但如果是单机测试,可以使用127.0.0.1和一个固定的端口。 2. **Address**: 指定节点的网络...
JGroups(Java多播通讯框架)简介 JGroups是一个可靠的群组通讯Java工具...- 支持UDP (IP Multicast), TCP, JMS等传输协议 - 免费开放源代码 JGroups(Java多播通讯框架)页面展示 相关阅读 同类推荐:站长常用源码
所不同的是,它的分解为相对独立的子问题,和它干净地处理所有实用的系统所需的主要部分。我们希望 Raft 将使共识可用于更广泛的受众,而这广泛的观众将能够开发各种高质量的一致同意的系统。Raft is a consensus ...
4. **MERGE3**:合并协议,处理网络分割后的组合并问题。 5. **NAKACK2**:确保消息的顺序接收和丢失重传,提供消息确认机制。 五、源码学习路径 学习JGroups源代码,可以从以下几个方面入手: 1. **了解协议栈...
其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组成员管理上进行扩展。其结构上设计灵活,提供了一种...
jgroups-2.2.7.jar jgroups-2.2.7.jar
jgroups.part1
它提供了一套全面的协议栈,能够处理网络中的节点发现、消息传递、故障检测和恢复等问题,从而使得开发分布式应用变得更加简单。在深入探讨JGroups之前,我们先了解一些基本概念。 **多播通讯**: 多播是一种网络...
Jgroups 中的 UNICAST3 协议详解 Jgroups 是一种基于 IP 多播的可靠的组播中间件,UNICAST3 协议是 Jgroups 中的一种单播协议,旨在保持单播和 UNICAST2 的正面特征,而修正负面特征。 UNICAST3 协议的主要特点是...
JGroup可以基于TCP协议来实现消息广播,也可以通过UDP方式来广播消息,利弊不言而喻,TCP可靠,但是代价大,性能没有UDP来的好,UDP速度快,代价小,但是消息的丢失率以及无序性有着很大的限制。但是JGroup在UDP方式...
2. 创建JGroups配置文件(如jgroups.xml),选择适当的协议栈(TCP或UDP)并调整相关参数。 3. 初始化Ehcache,启动集群节点,它们会自动发现并加入到集群中。 4. 测试集群功能,例如在一台机器上写入缓存,然后在...
此文档主要针对JGroups 2.X版本的官方帮助文档进行详细解读,旨在帮助开发者深入理解并有效地利用JGroups。 一、JGroups简介 JGroups的核心目标是确保在分布式环境中数据的一致性。它提供了一套完整的工具,用于...
组协议栈是由多个协议层组成的,如UDP、TCP、FRAG等,每个协议层都有特定的职责,如网络传输、消息分片或重传。 - **协议处理**:消息通过协议栈时,每个协议层都有机会修改或处理消息,如添加头信息、确保顺序等...
《JGroups:构建高效可靠的组通信系统》 JGroups是一个用Java编程语言编写的开源库,专注于实现基于IP组播的高效、可配置的组通信协议栈。它为分布式系统提供了一种健壮且灵活的方式来实现节点间的通信,是构建大...
### 关于JGroups 2.5教程:安装与开发简易应用程序 #### 安装与配置JGroups **JGroups**是一款高性能、可扩展且高度可靠的群集通信库,旨在为分布式系统提供消息传递功能。本教程将深入探讨如何安装配置JGroups,...