This is a presentation held at eLiberatica 2009.
http://www.eliberatica.ro/2009/
One of the biggest events of its kind in Eastern Europe, eLiberatica brings community leaders from around the world to discuss about the hottest topics in FLOSS movement, demonstrating the advantages of adopting, using and developing Open Source and Free Software solutions.
The eLiberatica organizational committee together with our speakers and guests, have graciously allowed media representatives and all attendees to photograph, videotape and otherwise record their sessions, on the condition that the photos, videos and recordings are licensed under the Creative Commons Share-Alike 3.0 License.
2. Agenda
Professional Open Source
o Clustering terminology
o JBoss clustering backbone
o JGroups
oJBossCache
oPojoCache
o The future – Infinispan
o Q&A
2
3. Clustering terminology
Professional Open Source
o Scalability
o I want to handle x times the number of concurrent requests than I can now
o High availability
o Services are accessible with reasonable (and predictable) response times at any time
o E.g., 99.999 (5 Nines in Telco)
o Load balancing
o A way to obtain scalability and better performance by dispatching incoming requests to different
servers
o Session affinity (or stickiness)
o Checking heart beat
o Failover
o Process can continue when it is re-directed to a “backup” node because the original one fails
o What is the policy? Round-robin?
o Fault tolerance
o A service that guarantees strictly correct behavior despite system failure
o Cost?
3
4. Load Balancing != Fault Tolerance
Professional Open Source
Load balancing is used for scalability, not for fault tolerance
4
5. Load Balancing != Fault Tolerance
Professional Open Source
Failover and state replication is used for fault tolerance
State Replication
5
6. Cost of Fault Tolerance
Professional Open Source
For fault tolerance, state must be available to the failover node
– Shared persistent store
• Caching is a problem; need cache invalidation
– Replicated state
Synchronous vs. Asynchronous Replication
– Reduced application responsiveness vs. chance that failover occurs
before state arrives
Analyze the likelihood of failure
– How much fault tolerance is needed?
Limit amount of replicated state
– Entity data can be reconstructed
– Consider keeping short term-conversational state on client
• Form data from a wizard
6
7. JGroups
Professional Open Source
o Library for reliable multicasting
o Provides
o Fragmentation
o Message retransmission
o Flow control
o Ordering
o Group membership, membership change notification
o LAN or WAN based
o IP multicasting transport default for LAN
o TCP transport default for WAN
7
8. JBossCache
Professional Open Source
o Replicated in memory data repository
o Either locally or cluster-wide
o Support for eviction of unused elements
o Cache loading/storing to disk to free up memory
o Chaining caches, remote caches using
TcpCacheLoader
o Support for JTA transactions
o Listeners and notifications
o JMX manageability
o Multiple locking schemes (MVCC recommanded)
o JGroups as a network stack
8
9. PojoCache
Professional Open Source
oExtension of core cache
oOptimised for caching large and complex
objects with relationships
oObject relationships maintained, even
after replication or persistence
oFine-grained replication
oMinimal API
9
10. Where is JBossCache used?
Professional Open Source
o JBoss Application Server - Clustering HTTP and EJB
sessions, JPA entities
o Hibernate - entity caching
o SEAM - caching JSF generated content
o JBoss Portal
o Lucene/Hibernate Search - cluster-wide indexes
o GridGain - data grid component to complement compute
grid
o Coming soon:
– Drools - clustering rules engines
– Mobicents – VOIP SIP server clustering
o Many other open source and commercial projects
10
11. Infinispan – the future
Professional Open Source
o JBossCache is now in maintenance
o simple-to-use Map interface
o Replication
o Total
o Distribution/consistent hashing – virtually linear
scalability
o Transaction support enhancement - XAResource
o Data eviction redesign
o JSR-107 compliant
o Benchmark to come!
(CacheBenchmarkFramework)
11
12. Infinispan - data persistence
Professional Open Source
o Useful for
o‘warm’ starts
oSurvive server restarts
oSwap data to disk to avoid OOM
o Several ‘CacheStore’ implementations
oJDBC
oFile system
oAmazon S3
(http://code.google.com/p/jclouds)
oJDBM
12
13. Infinispan – datagrid platform
Professional Open Source
o Data grid
oUniform sea of memory
oSpread over several servers
o Solution to database limitations
oPhysical limitations
oDB does not scale
o “memory is the new disk, disk is the new
tape” - Tim Bray
13
14. Infinispan – async API
Professional Open Source
o New API in Infinispan, major feature for 4.0
o Hybrid between sync and async calls
14
15. New cool things to come!
Professional Open Source
omemcached server/clients, able to use
from Python, Ruby, C++, C#
oQuery API - do remote searches
oMap/Reduce - pass the cache a Callable
and have it execute wherever the data
exists
oJPA-style API. Easy migration from
using a database to using the grid!
oCheck it out here!
http://www.jboss.org/infinispan
15