`
titanfoot
  • 浏览: 255085 次
  • 性别: 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_集群.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.part1

    jgroups.part1

    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@...

    Ehcache通过Jgroups做集群

    Ehcache通过使用Jgroups做集群配置,更改每一个不同的jgroups.xml文件的端口号和IP,如果一台机器就使用127.0.0.1即可。配置好之后,把每台机器起来,就可以测试了。

    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

    jgroups.part3

    jgroups.part3

    jgroups源代码

    jgroups源代码,想要学习jgroups开源框架的童鞋可以看看

    Jgroups中的UNICAST3协议中文翻译

    Jgroups是一款组播工具,基于IP多播的可靠的组播中间件

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

    JGroups(Java多播通讯框架)简介 JGroups是一个可靠的群组通讯Java工具包。它基于IP组播(IP multicast),但在可靠性,组成员管理上对它作了扩展。 JGroups的可靠性体现在: 1,对所有接收者的消息的无丢失传输...

    基于JGroups的共享电子白板系统的研究与实现

    基于JGroups的共享电子白板系统的研究与实现

    Jgroups 教程

    JGROUPs 的重要用法全部都在里面了

    Java多播通讯框架 JGroups

    Java多播通讯框架 JGroups

    jgroups-2.5.1-jdk14.jar

    jgroups-2.5.1-jdk14.jar,网络通信工具包,版本号2.5.1

    jgroups-2.2.8.jar

    jgroups-2.2.8.jar.........

    Jgroups-all.jar

    JGroup是当前被广泛使用的可靠组间通信的工具之一。例如OSCache以及JBossTreeCache都是用的是JGroup。 JGroup功能十分强大,通过配置各种参数就可以充分利用它所提供的各项功能。JGroup最大的特点就是支持协议栈的...

Global site tag (gtag.js) - Google Analytics