Presentation is loading. Please wait.

Presentation is loading. Please wait.

© JBoss Inc. 2006 JBoss Clustering An Overview Bela Ban Lead JGroups, Manager Clustering Group.

Similar presentations


Presentation on theme: "© JBoss Inc. 2006 JBoss Clustering An Overview Bela Ban Lead JGroups, Manager Clustering Group."— Presentation transcript:

1 © JBoss Inc. 2006 JBoss Clustering An Overview Bela Ban (bela@jboss.com) Lead JGroups, Manager Clustering Group

2 2 © JBoss Inc. 2006 Topics What is clustering? JBoss/JEMS Clustering Components JGroups, JBoss Cache, HA-JNDI, SLSBs, SFSBs, HTTP session replication, Entity beans, EJB3 and POJO Clustering

3 3 © JBoss Inc. 2006 Why JBoss Clustering? Transparent No stub re-compiling! Client doesn’t know about clustering aspect Cluster is maintained automatically Modular/stack approach Open source No extra cost to activate clustering Fairly robust 24/7 production support

4 4 © JBoss Inc. 2006 Clustering Terminology Scalability I want to handle x times the number of concurrent access than what I have now High availability Services are accessible with reasonable (and predictable) response times at any time E.g., 99.999 (5 Nines in Telco) Load balancing A way to obtain high availability and better performance by dispatching incoming requests to different servers Session affinity (or stickiness) Failover Process can continue when it is re-directed to a “backup” node because the original one fails State needs to be available on backup Fault tolerance A service that guarantees strictly correct behavior despite system failure

5 5 © JBoss Inc. 2006 Clustering Overview Load Balancer State Replication Failover R1 R2 R3

6 6 © JBoss Inc. 2006 JBoss Thin Client Clustering Front end load balancer Software Apache httpd and JBossWeb Apache with mod_jk/mod_proxy JBossWeb (Tomcat on steroids) Hardware F5 Big IP

7 7 © JBoss Inc. 2006 JBoss Fat Client Clustering Client uses smart proxy retrieved from JNDI HA smart proxy Based on Remoting (EJB3.0) or RMI (EJB2.1) Has load balancing policy, e.g., Round-Robin Has failover capability (sticky), e.g., detect call failure HA smart proxy has logic inside Logic is pluggable, users can provide their own Failover policy Load balancing, e.g. based on load or weight

8 8 © JBoss Inc. 2006 Running JBoss Cluster – Basic Steps Use JBoss’ “all” configuration run.bat -c all./run.sh -c all The “all” configuration contains everything needed for clustering: It has all the libraries for clustering JGroups.jar, jboss-cache.jar Clustered beans (cluster-service.xml) HA-JNDI HTTP session replications (tc5-cluster- service.xml) Farming HA-JMS

9 9 © JBoss Inc. 2006 Clustering divided in 3 parts Client-cluster communication Formerly HA-RMI, no HA-Remoting Load balancing and failover logic for fat clients State replication (inside cluster) JBoss Cache HTTP session, SFSBs, DistributedState Cluster communication (inside cluster) Method calls across all cluster nodes Cache invalidation, HA-JNDI, Farming

10 10 © JBoss Inc. 2006 Clustering Stack JGroups JBossCache DRM HA-JNDI HTTP SFSB Entity Hibernate Distributed RPC, Membership Messaging HAServices DRM Farming HA- Singleton HA- Remoting Distributed State jBpm

11 11 © JBoss Inc. 2006 What is JGroups? A reliable group messaging library Reliable messaging Sequence ordering FIFO or total ordering Flow control Acknowledgement Fragmentation Manage group membership Join Leave Shun

12 12 © JBoss Inc. 2006 What is JBoss Cache? An in-memory, replicated, transactional, persistent, and fine- grained cache system Uses JGroups as the messaging layer Ideal for state replication Transactional Persistent (and passivation) Fine-grained field-level replication Sub-partitioning, Buddy Replication

13 13 © JBoss Inc. 2006 HA-JNDI Clustered JNDI

14 14 © JBoss Inc. 2006 Local proxies Local proxies have direct reference to container localInvoke() creates invocation in container Remote proxies Remote proxies create invocation on client (method, args, ObjectName) Communicate via Remoting framework HA Smart Proxies Client JVM Dispatcher Server JVM 011101 Typed Interface Remote Proxy Remoting Connector Remoting Connector AOP Container Invocation Port 3873 Client dynamicInvoke(Invocation) localInvoke(Method, args) Local client Typed Interface Local Proxy JBoss Remoting

15 15 © JBoss Inc. 2006 JBoss Remoting JBoss Remoting is a framework with a single, simple API for making network based invocations and other network related services. Client – the external API access point for client code. Client/Server Invoker – protocol specific implementation. For example, SocketClientInvoker and SocketServerInvoker. Invocation Handler – end target interface implemented by user that receives the invocation from the client.

16 16 © JBoss Inc. 2006 SFSB Configuration in EJB 2   ClusteredSessionBean  True   MyPartition   org.jboss.ha.framework.interfaces.RoundRobin   org.jboss.ha.framework.interfaces.FirstAvailable   ClusteredSessionBean  True   MyPartition   org.jboss.ha.framework.interfaces.RoundRobin   org.jboss.ha.framework.interfaces.FirstAvailable 

17 17 © JBoss Inc. 2006 import org.jboss.ejb3.remoting.Clustered; @Stateful @Clustered (loadBalancePolicy = FirstAvailable.class, partition = ”MyPartition”) public class ClusteredSessionBean implements ClusteredSession { } import org.jboss.ejb3.remoting.Clustered; @Stateful @Clustered (loadBalancePolicy = FirstAvailable.class, partition = ”MyPartition”) public class ClusteredSessionBean implements ClusteredSession { } SFSB Configuration in EJB3

18 18 © JBoss Inc. 2006 Entities Use JBoss Cache as Hibernate’s 2nd level cache Default cache in ejb3-entity-cache-service.xml jboss.cache:service=EJB3EntityTreeCache Configure in META-INF/hibernate.cfg.xml per app

19 19 © JBoss Inc. 2006 Entities org.jboss.ejb3.entity.TreeCacheProviderHook jboss.cache:service=EJB3EntityTreeCache org.jboss.ejb3.entity.TreeCacheProviderHook jboss.cache:service=EJB3EntityTreeCache

20 20 © JBoss Inc. 2006 Future @Entity @Replicated(mode=asynchronous,type=BuddyReplication,BackupCopies=1) public class Pojo { @id long key; @transient int cacheID; } @Entity @Replicated(mode=asynchronous,type=BuddyReplication,BackupCopies=1) public class Pojo { @id long key; @transient int cacheID; } Common set of annotations @Replicated, @Singleton, @N-lton, @Farmed, @Remote Integration into EJB3 (detach and attach extended to replication)

21 21 © JBoss Inc. 2006 HTTP Session Replication JBossWeb Replication granularity Session Modified attributes Modified fields Implemented using JBoss Cache

22 22 © JBoss Inc. 2006 Granularity: SESSION Entire http session is replicated User defines whether getAttribute() call marks a session as dirty If attribute value is mutable, the application can modify session state without calling setAttribute() Operates blindly (application may not have changed the object) After each HTTP request the entire session is serialized and replicated

23 23 © JBoss Inc. 2006 Granularity: SESSION // … if replication triggered by getAttribute() is disabled: Pojo pojo = (Pojo)session.getAttribute(“pojo”); pojo.setName(“Ben”); session.setAttribute(“pojo”, pojo); // Done manually to replicate the session // … if replication triggered by getAttribute() is enabled: Pojo pojo = (Pojo)session.getAttribute(“pojo”); // Session will be replicated return pojo.getName(); // Pojo was not actually changed // … if replication triggered by getAttribute() is disabled: Pojo pojo = (Pojo)session.getAttribute(“pojo”); pojo.setName(“Ben”); session.setAttribute(“pojo”, pojo); // Done manually to replicate the session // … if replication triggered by getAttribute() is enabled: Pojo pojo = (Pojo)session.getAttribute(“pojo”); // Session will be replicated return pojo.getName(); // Pojo was not actually changed

24 24 © JBoss Inc. 2006 Granularity: ATTRIBUTE Only attributes marked as dirty are replicated. More efficient than session granularity User still needs to manage object relationship Can still configure whether getAttribute() marks the attribute as dirty Pojo pojo = (Pojo)session.getAttribute(“pojo”); pojo.setName(“Ben”); session.setAttribute(“pojo”, pojo); // Only attribute “pojo” gets replicated! Pojo pojo = (Pojo)session.getAttribute(“pojo”); pojo.setName(“Ben”); session.setAttribute(“pojo”, pojo); // Only attribute “pojo” gets replicated!

25 25 © JBoss Inc. 2006 Granularity: FIELD Replication is on Pojo field level where Pojo has to be instrumented with AOP Annotation or XML Object relationships are maintained Available beginning with JBoss 4.0.4 Person joe = (Person)session.getAttribute(“joe”); joe.setName(“joe”); // Only this field gets replicated. Person mary = (Person)session.getAttribute(“mary”); mary.setAge(41); // Only this field gets replicated. Address addr = new Address(“San Jose”, 95123); joe.setAddress(addr); mary.setAddress(addr); // addr only gets replicated once; shared ref is maintained Person joe = (Person)session.getAttribute(“joe”); joe.setName(“joe”); // Only this field gets replicated. Person mary = (Person)session.getAttribute(“mary”); mary.setAge(41); // Only this field gets replicated. Address addr = new Address(“San Jose”, 95123); joe.setAddress(addr); mary.setAddress(addr); // addr only gets replicated once; shared ref is maintained

26 26 © JBoss Inc. 2006 Granularity: FIELD When a Pojo object size is huge, e.g., a long List of size 100K, field level replication is efficient! Subsription subs = (Subscription)session.getAttribute(“subscription”); // What if list is size of 100K? List mailingList = (List)subs.getMailingList(); Person joe = findSubscriber(“joe”, mailingList); joe.getAddress().setZip(94086); // Only replicates this field!! Subsription subs = (Subscription)session.getAttribute(“subscription”); // What if list is size of 100K? List mailingList = (List)subs.getMailingList(); Person joe = findSubscriber(“joe”, mailingList); joe.getAddress().setZip(94086); // Only replicates this field!!

27 27 © JBoss Inc. 2006 Clustering – Configuration Session replication is enabled per web application in WEB-INF/web.xml Add to your webapp JBoss specific stuff (async vs sync replication) goes into WEB-INF/jboss- web.xml

28 28 © JBoss Inc. 2006 Links Details on Clustering Documentation http://docs.jboss.com JBoss AS chapters 16 (Clustering) & 17 (JBossCache and JGroups) http://www.jboss.com/products/jbosscache http://www.jboss.com/products/jgroups Webinars http://www.jboss.com/services/online_edu cation Training http://www.jboss.com/services/training/clu stering (next: Berlin March 21-24)

29 © JBoss Inc. 2006 Questions ?


Download ppt "© JBoss Inc. 2006 JBoss Clustering An Overview Bela Ban Lead JGroups, Manager Clustering Group."

Similar presentations


Ads by Google