`
titanfoot
  • 浏览: 261294 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JGroups 2.7

阅读更多

Release Notes JGroups 2.7
=========================

Version: $Id: ReleaseNotes-2.7.txt,v 1.6 2008/11/13 08:18:41 belaban Exp $
Author: Bela Ban

JGroups 2.7 is still API-backwards compatible with previous versions
(down to 2.2.7).

This is a big release, with close to 200 JIRA issues fixed and major new
functionality.

Below is a summary (with links to the detailed description) of the major
new features.


Features
========

Shared transport
----------------
[https://jira.jboss.org/jira/browse/JGRP-631 ]

Multiple channels can now share the same transport (and still have
different stack configurations on top). This
replaces the Multiplexer, which is not supported any longer as of 2.7.

See
http://www.jgroups.org/javagroupsnew/docs/manual/html/user-advanced.html#d0e2204
for details.



Converted unit tests from JUnit to TestNG
------------------------------

-----------
[https://jira.jboss.org/jira/browse/JGRP-410 ]

This cut down the time to run all tests from 2.5 hours to 15 minutes !


Use of annotations to provide JMX management information
--------------------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-723 ]
[https://jira.jboss.org/jira/browse/JGRP-408 ]

By annotating a protocol as @ManagedResource, an attribute as
@ManagedAttribute or an operation as
@ManagedOperation, we can simply expose JMX management information.

This change allowed us to remove the parallel JMX class hierarchy
(org.jgroups.jmx package), and dramatically
reduced the effort needed to expose protocols via JMX.

Credits for the initial implementation go to Chris Mills.



Use of annotations to set properties
------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-765 ]

Instead of implementing setProperties() in each protocol, parsing the
input string and converting it to a variable, we
now use the @Property annoation to mark an attribute or getter/setter
method. This way, input strings are
automatically mapped to the corresponding fields in a protocol.

This allowed us to remove a lot of boilerplate code.

In addition, we now generate the protocol list
documentation
(http://www.jgroups.org/javagroupsnew/docs/manual/html/protlist.html )
from the @Property annotations.
The benefit is that we need to maintain the documentation only in one
place (the code) instead of two, and we now
have a complete documentation of all protocol properties.


Ability to replace thread pools with custom thread pools
--------------------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-632 ]

This allows (for example) system integrators to use the thread pools
they already have in their applications. It
also gives greater control over thread pool management, e.g. a provider
can make all threads in a pool daemon threads.


Allow flushing of a cluster subset
----------------------------------
[https://jira.jboss.org/jira/browse/JGRP-661 ]

Rather than flushing the entire cluster, we can now provide a list of
target members for the FLUSH. This is needed
for example for buddy replication in JBossCache.


Performance improvements
------------------------
[https://jira.jboss.org/jira/browse/JGRP-846 ]
[https://jira.jboss.org/jira/browse/JGRP-847 ]
[https://jira.jboss.org/jira/browse/JGRP-805 ]
[https://jira.jboss.org/jira/browse/JGRP-806 ]
[https://jira.jboss.org/jira/browse/JGRP-829 ]
[https://jira.jboss.org/jira/browse/JGRP-813 ]


http://www.jgroups.org/javagroupsnew/docs/performance.html shows that we
can get 150MB/sec/node on a 4 node
cluster connected to a 1GB switch with udp.xml (IP multicasting) on 2.7.
This means we get an aggregate cluster
throughput of 600MB/sec !

2.7 is ca 30-40% faster than 2.6 !


FC: max block times depending on message size
---------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-804 ]

We can now set the max time to block for a given message, e.g. block
10ms max for messages up to 10K, 100ms for messages
up to 1MB, 500ms for messages up to 10MB and 2000ms for messages larger
than that.

This means that - regardless of missing credits - messages will be sent
after the deadline (max block time) has
elapsed. This adds more predictability as to when messages are sent, but
it also can lead to OOMEs if those values
are too low, defying the purpose of flow control.


UNICAST/NAKACK: eager lock release
----------------------------------
[https://jira.jboss.org/jira/browse/JGRP-656 ]

Better performance in cases where the receiver of a message uses the
calling thread to send a message down the stack.
In this case, the lock will be release as soon as send() is called,
releasing the lock and allowing threads with
messages from the same sender to proceed.


GossipRouter / GossipClient: make sockets non-blocking
------------------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-702 ]
[https://jira.jboss.org/jira/browse/JGRP-852 ]

Can now be configured to use non blocking socket close, connect and
read/write


Paralellize discovery phase
---------------------------
[https://jira.jboss.org/jira/browse/JGRP-375 ]


Pluggable Probe
---------------
[https://jira.jboss.org/jira/browse/JGRP-832 ]

This allows for users to write their own plugins which respond to a ping
(a probe) and return (for example)
application specific information.

Details are at http://www.jboss.org/community/docs/DOC-11689 (towards
the bottom of the page).





Bug fixes
=========

FD: nodes would not get suspected if traffic from different nodes was
received
------------------------------------------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-746 ]

Traffic from *any* node was counted as a heartbeat. This is incorrect as
only traffic from the pinged member
should count as heartbeat.

FRAG/FRAG2: fragment list is not cleared for crashed member (can lead to
memory leak)
-------------------------------------------------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-800 ]

NAKACK: regular message not delivered (in some cases) until new message
arrives
-------------------------------------------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-781 ]

STATE_TRANSFER: state transfer broken for large states
------------------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-774 ]

Concurrent connect of multiple channels with shared transport fails
-------------------------------------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-849 ]

Eliminate Linux cross-talk in MPING
-----------------------------------
[https://jira.jboss.org/jira/browse/JGRP-836 ]

FLUSH fixes
-----------
[https://jira.jboss.org/jira/browse/JGRP-756 ]
[https://jira.jboss.org/jira/browse/JGRP-759 ]
[https://jira.jboss.org/jira/browse/JGRP-700 ]
[https://jira.jboss.org/jira/browse/JGRP-622 ]

FD_SOCK: fixes
--------------
[https://jira.jboss.org/jira/browse/JGRP-841 ]
[https://jira.jboss.org/jira/browse/JGRP-845 ]
[https://jira.jboss.org/jira/browse/JGRP-794 ]
[https://jira.jboss.org/jira/browse/JGRP-745 ]

NAKACK: merging of digests is incorrect
---------------------------------------
[https://jira.jboss.org/jira/browse/JGRP-699 ]





Manual
------
The manual is online at
http://www.jgroups.org/javagroupsnew/docs/manual/html/index.html



The complete list of features and bug fixes can be found at
http://jira.jboss.com/jira/browse/JGRP .


Bela Ban, Kreuzlingen, Switzerland
Vladimir Blagojevic, Toronto, Canada

Nov 2008
分享到:
评论

相关推荐

    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 教程

    ##### 2.7 结论 通过本教程的学习,我们不仅掌握了JGroups的安装配置,还深入了解了如何使用JGroups API来构建和管理分布式系统。JGroups的强大之处在于其灵活性和扩展性,能够满足不同场景下的需求。 总之,...

    Ehcache通过Jgroups做集群

    在Ehcache通过Jgroups进行集群配置时,首先需要理解Jgroups的配置文件——`jgroups.xml`。这个文件定义了集群中节点如何相互发现、通信以及故障检测的规则。配置文件中的关键元素包括: 1. **Transport**: 定义了...

    JGroups_集群.pdf

    JGroups集群技术概述 JGroups是一个用于建立可靠的组播通信的工具包,它提供了灵活的、可定制的协议栈,以满足不同的需求。JGroups支持多种传输协议,包括UDP、TCP和JMS等。在JGroups中,消息传输可以保证可靠性,...

    JGroups的Raft实现jgroups-raft.zip

    jgroups-raft 项目是 JGroups 框架对 Raft 的实现。Maven:<groupId>org.jgroups <artifactId>jgroups-raft <version>0.2</version>Raft 是一个容易理解的共识算法。在容错和性能方面它相当于 Paxos(Google 的一致...

    jgroups-2.2.7.jar

    jgroups-2.2.7.jar jgroups-2.2.7.jar

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

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

    jgroups.part1

    jgroups.part1

    jgroups源代码

    《深入解析JGroups开源框架:基于belaban-JGroups-19d7183源代码》 JGroups是一个用于构建高可用性集群的Java框架,它提供了可靠的消息传递、组成员管理和故障检测等功能,广泛应用于分布式系统中。本文将基于bela...

    JGroups-jdk.zip_jgroups

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

    jgroups-3.0.2

    JGroups是一个开源的纯java编写的可靠的群组通讯工具。其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组...

    Android代码-jgroups-android

    JGroups - A Framework for Group Communication in Java ======================================================== March 3, 1998 Bela Ban 4114 Upson Hall Cornell University Ithaca, NY 14853 bba@...

    Jgroups中的UNICAST3协议中文翻译

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

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

    《JGROUPS集群框架源码分析之消息发送、处理、接收》 JGROUPS是一款强大的开源通信框架,专为构建高可用性、高容错性的分布式系统而设计。它提供了集群内的消息传递功能,允许节点间可靠地交换信息。本文将深入探讨...

    jgroups

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

    Java多播通讯框架 JGroups

    Java多播通讯框架JGroups是Java开发者用于构建高可用、高性能和可伸缩的集群通信系统的重要工具。它提供了一套全面的协议栈,能够处理网络中的节点发现、消息传递、故障检测和恢复等问题,从而使得开发分布式应用变...

    jgroups-3.2

    JGroups是一个开源的纯java编写的可靠的群组通讯工具。其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组...

    jgroups-2.6.8.GA.jar

    jgroups-2.6.8.GA.jar jgroups-2.6.8.GA.jar

Global site tag (gtag.js) - Google Analytics