[
https://issues.jboss.org/browse/JGRP-1317?page=com.atlassian.jira.plugin....
]
Bela Ban updated JGRP-1317:
---------------------------
Fix Version/s: 3.1
(was: 3.0)
(was: 2.12.2)
Description:
For large clusters, STABLE messages are quite large, and should be compressed to be sent
over the wirew.
STABLE messages are sent between members in the same view, so we could only send the
ViewId + highest_delivered/highest_received seqnos.
Everybody who receives a STABLE message grabs the View associated with the ViewId (should
be the current view !) and creates a Digest based on the View and the long[] array.
Further optimization:
- Canonicalize digests: if everyone has (14) 20, 22, then we could write it once, give it
an ID of (say) 1 and then only refer to 1 again if we encounter the same digest. Actually,
as a matter of fact, most of the digests would be the same, so this optimization could
have a big effect !
was:
For large clusters, stable messages are quite large, and should be compressed.
E.g.:
- Don't send the entire view (with all members), but only the ViewId, then the indices
of a digest array would point to the rank of a member within the referred-to ViewId
- A digest has 3 longs (low, highest_received and highest_delivered). Do we need all 3
every time ?
- Compress the 3 longs into 1 long and 2 shorts: the latter 2 are offsets from the first
seqno
- Use a bit set (consisting of a variable number of ints) to set the 3 variables
- If we have a digest (0), 0, 0: send a special marker
- Canonicalize digests: if everyone has (14) 20, 22, then we could write it once, give it
an ID of (say) 1 and then only refer to 1 again if we encounter the same digest. Actually,
as a matter of fact, most of the digests would be the same, so this optimization could
have a big effect !
STABLE: compress STABLE messages
--------------------------------
Key: JGRP-1317
URL:
https://issues.jboss.org/browse/JGRP-1317
Project: JGroups
Issue Type: Feature Request
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 3.1
For large clusters, STABLE messages are quite large, and should be compressed to be sent
over the wirew.
STABLE messages are sent between members in the same view, so we could only send the
ViewId + highest_delivered/highest_received seqnos.
Everybody who receives a STABLE message grabs the View associated with the ViewId (should
be the current view !) and creates a Digest based on the View and the long[] array.
Further optimization:
- Canonicalize digests: if everyone has (14) 20, 22, then we could write it once, give it
an ID of (say) 1 and then only refer to 1 again if we encounter the same digest. Actually,
as a matter of fact, most of the digests would be the same, so this optimization could
have a big effect !
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira