0 0

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
目前还没有答案

相关推荐

    jgroups-3.0.2

    其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组成员管理上进行扩展。其结构上设计灵活,提供了一种...

    JGroups_集群.pdf

    JGroups的协议栈可以根据不同的需求进行定制,例如,如果选择使用IP Multicast作为传输协议,可以在协议栈中添加NAKACK协议以防止报文丢失和重复,添加TOTAL协议以保证报文的顺序,添加Group Membership Service ...

    JavaEE源代码 jgroups-2.2.8

    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是一款高性能、高可用性的集群通信中间件,适用于构建分布式系统。本文档将详细介绍如何安装配置JGroups,并编写一个简单的应用来演示其主要功能。 ...

    Ehcache通过Jgroups做集群

    1. **Transport**: 定义了节点间通信的协议和参数,例如UDP或TCP。在端口配置中,每个节点应使用不同的端口以避免冲突,但如果是单机测试,可以使用127.0.0.1和一个固定的端口。 2. **Address**: 指定节点的网络...

    JGroups(Java多播通讯框架) v4.0.0.CR1.zip

    JGroups(Java多播通讯框架)简介 JGroups是一个可靠的群组通讯Java工具...- 支持UDP (IP Multicast), TCP, JMS等传输协议 - 免费开放源代码 JGroups(Java多播通讯框架)页面展示 相关阅读 同类推荐:站长常用源码

    JGroups的Raft实现jgroups-raft.zip

    所不同的是,它的分解为相对独立的子问题,和它干净地处理所有实用的系统所需的主要部分。我们希望 Raft 将使共识可用于更广泛的受众,而这广泛的观众将能够开发各种高质量的一致同意的系统。Raft is a consensus ...

    jgroups源代码

    4. **MERGE3**:合并协议,处理网络分割后的组合并问题。 5. **NAKACK2**:确保消息的顺序接收和丢失重传,提供消息确认机制。 五、源码学习路径 学习JGroups源代码,可以从以下几个方面入手: 1. **了解协议栈...

    jgroups-3.2

    其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组成员管理上进行扩展。其结构上设计灵活,提供了一种...

    jgroups-2.2.7.jar

    jgroups-2.2.7.jar jgroups-2.2.7.jar

    jgroups.part1

    jgroups.part1

    Java多播通讯框架 JGroups

    它提供了一套全面的协议栈,能够处理网络中的节点发现、消息传递、故障检测和恢复等问题,从而使得开发分布式应用变得更加简单。在深入探讨JGroups之前,我们先了解一些基本概念。 **多播通讯**: 多播是一种网络...

    Jgroups中的UNICAST3协议中文翻译

    Jgroups 中的 UNICAST3 协议详解 Jgroups 是一种基于 IP 多播的可靠的组播中间件,UNICAST3 协议是 Jgroups 中的一种单播协议,旨在保持单播和 UNICAST2 的正面特征,而修正负面特征。 UNICAST3 协议的主要特点是...

    Jgroups-all.jar

    JGroup可以基于TCP协议来实现消息广播,也可以通过UDP方式来广播消息,利弊不言而喻,TCP可靠,但是代价大,性能没有UDP来的好,UDP速度快,代价小,但是消息的丢失率以及无序性有着很大的限制。但是JGroup在UDP方式...

    ehcache jroups tcp udp试用实例

    2. 创建JGroups配置文件(如jgroups.xml),选择适当的协议栈(TCP或UDP)并调整相关参数。 3. 初始化Ehcache,启动集群节点,它们会自动发现并加入到集群中。 4. 测试集群功能,例如在一台机器上写入缓存,然后在...

    jgroups官方帮助文档html格式打包2.X版本

    此文档主要针对JGroups 2.X版本的官方帮助文档进行详细解读,旨在帮助开发者深入理解并有效地利用JGroups。 一、JGroups简介 JGroups的核心目标是确保在分布式环境中数据的一致性。它提供了一套完整的工具,用于...

    JGROUPS集群框架源码分析之消息发送、处理、接收

    组协议栈是由多个协议层组成的,如UDP、TCP、FRAG等,每个协议层都有特定的职责,如网络传输、消息分片或重传。 - **协议处理**:消息通过协议栈时,每个协议层都有机会修改或处理消息,如添加头信息、确保顺序等...

    JGroups-jdk.zip_jgroups

    《JGroups:构建高效可靠的组通信系统》 JGroups是一个用Java编程语言编写的开源库,专注于实现基于IP组播的高效、可配置的组通信协议栈。它为分布式系统提供了一种健壮且灵活的方式来实现节点间的通信,是构建大...

    jgroups

    ### 关于JGroups 2.5教程:安装与开发简易应用程序 #### 安装与配置JGroups **JGroups**是一款高性能、可扩展且高度可靠的群集通信库,旨在为分布式系统提供消息传递功能。本教程将深入探讨如何安装配置JGroups,...

Global site tag (gtag.js) - Google Analytics