1 / 29

JBoss Clustering An Overview

JBoss Clustering An Overview. Bela Ban (bela@jboss.com) Lead JGroups, Manager Clustering Group. Topics. What is clustering? JBoss/JEMS Clustering Components JGroups, JBoss Cache, HA-JNDI, SLSBs, SFSBs, HTTP session replication, Entity beans, EJB3 and POJO Clustering. Why JBoss Clustering?.

ayasha
Download Presentation

JBoss Clustering An Overview

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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. 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. 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. Failover R1 State Replication Load Balancer R3 R2 R1 R3 R2 Clustering Overview

  6. 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. 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. 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. 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. Distributed RPC, Membership jBpm Entity HA-Remoting Farming HA-JNDI Distributed State HA-Singleton SFSB HTTP Hibernate DRM DRM Messaging JBossCache HAServices JGroups Clustering Stack

  11. 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. 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. HA-JNDI • Clustered JNDI

  14. Server JVM Local client Typed Interface Client JVM Local Proxy Dispatcher localInvoke(Method, args) Typed Interface Invocation JBoss Remoting AOP Container Client Remoting Connector 011101 Port 3873 dynamicInvoke(Invocation) Remote Proxy HA Smart Proxies • 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

  15. 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. SFSB Configuration in EJB 2 • <enterprise-beans> • <session> • <ejb-name> ClusteredSessionBean </ejb-name> • <jndi-name> ClusteredSessionBean </jndi-name> • <clustered>True</clustered> • <cluster-config> • <partition-name>MyPartition</partition-name> • <home-load-balance-policy> • org.jboss.ha.framework.interfaces.RoundRobin • </home-load-balance-policy> • <bean-load-balance-policy> • org.jboss.ha.framework.interfaces.FirstAvailable • </bean-load-balance-policy> • </cluster-config> • </session>

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

  18. 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. Entities <hibernate-configuration> <session-factory> <!-- Clustered cache with TreeCache --> <property name="cache.provider_class">org.jboss.ejb3.entity.TreeCacheProviderHook</property> <!– Object Name of cache to use --> <property name="treecache.mbean.object_name">jboss.cache:service=EJB3EntityTreeCache</property> <!-- Define cached entities and collections --> <class-cache class="org.jboss.ejb3.tutorial.clusteredentity.bean.Customer" usage="transactional"/> <class-cache class="org.jboss.ejb3.tutorial.clusteredentity.bean.Contact" usage="transactional"/> <collection-cache collection="org.jboss.ejb3.tutorial.clusteredentity.bean.Customer.contacts" usage="transactional"/> </session-factory> </hibernate-configuration>

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

  21. HTTP Session Replication • JBossWeb • Replication granularity • Session • Modified attributes • Modified fields • Implemented using JBoss Cache

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

  24. 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!

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

  26. 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!!

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

  28. 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_education • Training • http://www.jboss.com/services/training/clustering (next: Berlin March 21-24)

  29. Questions ?

More Related