SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Clustered Architecture Patterns:
  Delivering Scalability and Availability                                                Qcon London, 2008

                                                                                         Ari Zilka – Terracotta CTO
                                                                                         and Founder




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Agenda

                            Patterns from Years of Tier-Based Computing

                            Network Attached Memory / JVM-level clustering

                            Applying NAM To Eliminate the DB

                            Use Case #1: Hibernate

                            Use Case #2: Service Orientation

                            Lessons Learned




Confidential – for information of designated recipient only. Copyright Terracotta 2006
The State Monster

                            At Walmart.com we started like everyone else: stateless + load-balanced
                            + Oracle (24 cpus, 24GB)

                            Grew up through distributed caching + partitioning + write behind

                            We realized that “ilities” conflict
                               – Scalability: avoid bottlenecks
                               – Availability: write to disk ( and I/O bottleneck )
                               – Simplicity: No copy-on-read / copy-on-write semantics (relentless tuning, bug fixing)

                            And yet we needed a stateless runtime for safe operation
                               – Start / stop any node regardless of workload
                               – Cluster-wide reboot needed to be quick; could not wait for caches to warm


                            The “ilities” clearly get affected by architecture direction and the stateless
                            model leads us down a precarious path



Confidential – for information of designated recipient only. Copyright Terracotta 2006
The Precarious Path: Our tools lead us astray

                            Stateless load-balanced architecture ⇒ bottleneck on DB

                            In-memory session replication ⇒ bottleneck on CPU, Memory

                            Clustered DB cache ⇒ bottleneck on Memory, DB

                            Memcache ⇒ bottleneck on server

                            JMS-based replicated cache ⇒ bottleneck on network



                            …Pushing the problem between our app tier CPU and the data
                            tier I/O




Confidential – for information of designated recipient only. Copyright Terracotta 2006
CRUD Pules Up…

                            Types of clustering:
                               – Load-balanced (non-partitioned) Scale Out
                               – Partitioned Scale Out

                            Both Trade-off Scalability or availability (usually by hand) in
                            different ways


                                                                           scalability




                                                                                         availability



                            …and everything we do forces the trade-offs

Confidential – for information of designated recipient only. Copyright Terracotta 2006
Changing the Assumptions: JVM-level Clustering




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Performance + Reliability

                            10X throughput over conventional APIs
                               –        All Reads from Cache (implicit locality)
                               –        All Writes are Deltas-only
                               –        Write in log-forward fashion (no disk seek time)
                               –        Statistics and Heuristics (greedy locks)

                            Scale out the Terracotta Server
                               – Simple form of Active / active available today
                               – V1.0 GA this year




Confidential – for information of designated recipient only. Copyright Terracotta 2006
HelloClusteredWorld (from our pending Apress book)

                            Chapter 3: Definitive Guide to Terracotta

                  public class HelloClusteredWorld {
                    private static final String message = quot;Hello Clustered World!quot;;
                    private static final int length = message.length();

                       private static char[] buffer = new char [length ];
                       private static int loopCounter;

                       public static void main(                                          String args[] ) throws Exception {
                         while( true ) {
                           synchronized( buffer                                          ) {
                             int messageIndex =                                          loopCounter++ % length;
                             if(messageIndex ==                                          0) java.util.Arrays.fill(buffer, '¥u0000');

                                        buffer[messageIndex] = message.charAt(messageIndex);
                                        System.out.println( buffer );
                                        Thread.sleep( 100 );
                                  }
                             }
                       }
                  }




Confidential – for information of designated recipient only. Copyright Terracotta 2006
HelloClusteredWorld Sequence Diagram




Confidential – for information of designated recipient only. Copyright Terracotta 2006
HelloClusteredWorld Config File
<?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?>
<tc:tc-config xmlns:tc=quot;http://www.terracotta.org/configquot;
  xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot;
  xsi:schemaLocation=quot;http://www.terracotta.org/schema/terracotta-4.xsdquot;>

<!-- servers and clients stanzas ommitted -->
  <application>
    <dso>
      <roots>
          <root>
             <field-name>HelloClusteredWorld.buffer</field-name>
          </root>
          <root>
             <field-name>HelloClusteredWorld.loopCounter</field-name>
          </root>
      </roots>
      <instrumented-classes>
        <include>
           <class-expression>HelloClusteredWorld</class-expression>
        </include>
      </instrumented-classes>
      <locks>
        <autolock>
           <lock-level>write</lock-level>
           <method-expression>void HelloClusteredWorld.main(..)</method-expression>
        </autolock>
      </locks>
    </dso>
  </application>
</tc:tc-config>

Confidential – for information of designated recipient only. Copyright Terracotta 2006
Applying NAM To DB Offload




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Stateless By Hand is Cumbersome and Inefficient
                                                                       User Conversation
                                                                                           Baseline
                                                                                           Application

                                                                                           3 User Requests
                                                                                           during one
                                                                                           Conversation

                                                                                           2 POJO Updates
                                                                                           per Request

                                                                                           Total DB Load: 9




Confidential – for information of designated recipient only. Copyright Terracotta 2006
So We Add Hibernate
                                                                       User Conversation
                                                                                           Add Hibernate

                                                                                           Eliminate Direct
                                                                                           Connection to the
                                                                                           DB via JDBC

                                                                                           Eliminate Hand-
                                                                                           Coded SQL

                                                                                           Eliminate
                                                                                           Intermediate
                                                                                           POJO Updates

                                                                                           Total DB Load: 6




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Then We Turn on Caching
                                                                       User Conversation
                                                                                               Enable 2nd Level
                                                                                               cache

                                                                                               Eliminates
                                                                                               Intermediate
                                                                                               Loads

                                                                                               Total DB Load: 4




                                                                                           Serialization is required
                                                                                           BLOB Replication requirements
                                                                                           are heavy


Confidential – for information of designated recipient only. Copyright Terracotta 2006
So We Disconnect But Lose Availability
                                                                       User Conversation
                                                                                                Detached POJOs

                                                                                                Eliminates
                                                                                                Intermediate
                                                                                                Commits

                                                                                                Total DB Load: 2

                                                                                           Can lose state in case of failure!
                                                                                           Replication is expensive
                                                                                           Hibernate says to keep graphs
                                                                                           small




Confidential – for information of designated recipient only. Copyright Terracotta 2006
JVM-Level Clustering + Hibernate Together

                           Cluster 2nd Level Cache - Hibernate Performance Curve Level 2
                                       EHCache Support Built in to the product

                                       Advantages
                                                   Coherent Cache Across the cluster
                                                   Easy to integrate with existing applications
                                                   Performs very well
                                                   Eliminate the artificial cache misses in clustered environment

                                       Disadvantages
                                                   Objects are represented as BLOBs by Hibernate
                                                   Doesn’t take direct advantage of Terracotta Scale-Out Features

                           Cluster Detached POJOs - Hibernate Performance Curve Level 3
                                       Cluster Pure POJOs
                                       Re-attach Session in the same JVM or a different JVM

                                       Advantages
                                                   Scales the best
                                                   Take Advantage of POJOs - Fine-grained changes, replicate only where resident

                                       Disadvantages
                                                   Some code changes required to refactor Hibernate’s beginTransaction(), commit()



Confidential – for information of designated recipient only. Copyright Terracotta 2006
Demonstration Application

                            Simple CRUD application
                               –        Based on Hibernate Tutorial (Person, Event)
                               –        Already Refactored for Detached POJOs
                               –        Simple Session Management in Terracotta Environment - POJO wrapper
                               –        Detached Strategy requires a flush operation

                            CREATE OPERATION
                               – Creates a new Person

                            UPDATE OPERATION
                               – UpdateAge -> updates the age
                               – UpdateEvent -> creates a new event and adds to Person

                            READ OPERATION
                               – Sets the current object to a random Person

                            DELETE OPERATION
                               – Not implemented

                            FLUSH OPERATION
                               – Re-attaches Session and writes modified POJO to DB

Confidential – for information of designated recipient only. Copyright Terracotta 2006
Source Code
                                                                                               DETACHED MODE
                  Person person = (Person) session.load(Person.class, (long) 1);
                         person.getAge();
                         session.getTransaction().commit();
                         HibernateUtil.getSessionFactory().close();

               for (int i = 0; i < TRANSACTIONS; i++) {
                   person.setAge((int) i % 100);
               }
                // Flush the changes
               session = HibernateUtil.getSessionFactory().getCurrentSession();
               session.beginTransaction();
               session.saveOrUpdate(person);
               session.getTransaction().commit();
               HibernateUtil.getSessionFactory().close();


                                                                                         HIBERNATE LEVEL2 CACHE MODE
               for (int i = 0; i < TRANSACTIONS; i++) {
                           session = HibernateUtil.getSessionFactory().getCurrentSession();
                           session.beginTransaction();
                           person = (Person) session.load(Person.class, (long) 1);
                           // update the person's age to a quot;randomquot; number between 0 and 99
                           person.setAge((int) i % 100);

                                                session.getTransaction().commit();
                                                if (i % 1000 == 0) { System.out.print(quot;.quot;); System.out.flush(); }
               }

Confidential – for information of designated recipient only. Copyright Terracotta 2006
Performance Tests

                            ReadAgeHibernate
                               – 25k iterations
                                             »      Reads a Person object, reads the age, commits
                               – Run with and without 2nd level cache

                            UpdateAgeHibernate
                               – 25k iterations
                                             »      Reads a Person object, updates the age, commits
                               – Run with and without 2nd level cache

                            ReadAgeTC
                               – Reads a Person object
                               – Sets person object into Terracotta clustered graph
                               – 25k iterations
                                             »      Reads the age

                            UpdateAgeTC
                               – Reads a Person object
                               – Sets person object into Terracotta clustered graph
                               – 25k iterations
                                             »      Updates the age
                               – Commits
Confidential – for information of designated recipient only. Copyright Terracotta 2006
Results: Hibernate vs. Detached POJOs


               Operation                                 Type                            Results
               Update                                    Hibernate                       ~ 1000 ops / sec

               Update                                    Hibernate + 2nd Level Cache     ~ 1800 ops / sec

               Update                                    Terracotta                      ~ 7000 ops / sec

               Operation                                 Type                            Results
               Read                                      Hibernate                       ~ 1000 ops / sec
               Read                                      Hibernate + 2nd Level Cache     ~ 1800 ops / sec
               Read                                      Terracotta                      ~ 500,000 ops / sec




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Case Studies




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Comparison: non-partitioned vs. partitioned scale out

                            Load Balanced Application
                               –        Publishing Company
                               –        Happy with availability and simplicity using Hibernate + Oracle
                               –        Not happy with scalability
                               –        SOLUTION: Hibernate disconnected mode

                            Partitioned Application
                               – Travel Company
                               – Happy with MQ-based availability, 4 dependent apps mean no API changes
                                 allowed
                               – System of Record too expensive to keep scaling
                               – SOLUTION: Proxy the System or Record; Partition for scale




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Large Publisher Gets Caught Down the Path with Oracle




                                                                                         Scaling Out or Up?




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Breaking the Pattern without Leaving “Load-Balanced” World
               •$1.5 Million DB & HW savings
               •Doubled business
               •More than halved database load




Confidential – for information of designated recipient only. Copyright Terracotta 2006
User Was Happy

                            Database was still the SoR which kept reporting and backup
                            simple

                            Scalability was increased by over 10X

                            Availability was not compromised since test data was still on disk,
                            but in memory-resident format instead of relational



                            …simple scalability + availability




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Example Caching Service

                            Reduce utilization of System of Record

                            Support 4 BUs

                            10K queries / second today

                            Headroom for 40K queries / second



                            (Note: all performance goals)




Confidential – for information of designated recipient only. Copyright Terracotta 2006
BU #1                                                               BU #2                      BU #3                          BU #4




         Data center
                                                                                         MQ API                          MQ API


                                                         Websphere MQ Series - MOM Messaging Infrastructure (JMS Topics)



                                                                                                          Existing MQ




                      Cache                                                                       ...                                          Cache
                      Node 1                                                                                                                  Node 27


                                                                                                                    Terracotta Server
                                                                                                                      Terracotta Server single pair
         Caching Layer

                                                                                                          SoR API

                                                                                                    SoR
Confidential – for information of designated recipient only. Copyright Terracotta 2006
BU #1                                                               BU #2                          BU #3                         BU #4




         Data center
                                                                                               MQ API                        MQ API


                                                         Websphere MQ Series - MOM Messaging Infrastructure (JMS Topics)



                                                                                                              Existing MQ




                      Cache                                                               Cache                     Cache             ...        Cache
                                                             ...
                      Node 1                                                             Node 14                   Node 15                      Node 27


                                                           Terracotta Server                                            Terracotta Server
                                                             Terracotta Server                                            Terracotta Server
         Caching Layer

                                                                                                              SoR API

                                                                                                        SoR
Confidential – for information of designated recipient only. Copyright Terracotta 2006
BU #1                                                               BU #2                              BU #3                         BU #4




         Data center
                                                                                               MQ API                             MQ API


                                                         Websphere MQ Series - MOM Messaging Infrastructure (JMS Topics)



                                                                                                                  Existing MQ

                                                                                                   Stateless Software
                                                                                                     Load Balancer


                      Cache                                  ...                          Cache                          Cache             ...       Cache
                      Node 1                                                             Node 14                        Node 15                     Node 27


                                                           Terracotta Server                                                Terracotta Server
                                                             Terracotta Server                                                Terracotta Server
         Caching Layer

                                                                                                                  SoR API


                                                                                                            SoR
Confidential – for information of designated recipient only. Copyright Terracotta 2006
User Was Unhappy

                            Simplicity was lost. The Partitioning leaked up the application
                            stack

                            Availability was no longer easy (failure had to partition as well)

                            Scalability was the only “Scale Out Dimension” delivered




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Lessons Learned: Scalability + Availability + Simplicity

                            Stop the Madness
                               – Stop the hacking! Stop the clustering!
                               – Start naïve and get more sophisticated on demand

                            Balancing the 3 requires scalable, durable memory across JVM
                            boundaries (spread out to scale out)



                            Simplicity ⇒ Require no specific coding model and no hard-
                            coded replication / persistence points

                            Scalability ⇒ Read from Local Memory; write only the deltas in
                            batches

                            Availability ⇒ Write to external process + write to disk



Confidential – for information of designated recipient only. Copyright Terracotta 2006
JVM-level Clustering Addresses the Trade-offs

                                                                                               “ILITIES”
             SIMPLE                                                                      SCALABLE                      AVAILABLE
             • Honors Language Spec                                                      • Virtual Heap                • Persist to disk at wire
               across JVM boundaries                                                                                     speed
                                                                                         • Read from Heap
             • Transparent to source                                                                                   • Active / Passive and
                                                                                         • Write deltas, only where
               code                                                                                                      Active / Active
                                                                                           needed
                                                                                                                         strategies
             • Thread Coordination too



                                                                                         Scale Out Model
             Models                                                                      Models                        Models
             • Load balanced stays                                                       • Load balanced scales        • Load balanced apps
               naïve                                                                       through implicit locality     made available by
                                                                                                                         writing heap to disk
             • Partitioned stays POJO                                                    • Partitioned scales by
               (abstractions are easy)                                                     avoiding data sharing       • Partitioned made
                                                                                                                         available by using the
                                                                                                                         cluster to store
                                                                                                                         workflow

Confidential – for information of designated recipient only. Copyright Terracotta 2006
Guidelines: NAM helps Load-Balanced Scale Out

                            Simplicity ⇒ Ignore the impedance mismatch. Don’t be afraid of
                            the DB.

                            Scalability ⇒ Just cache it! (EHCache, JBossCache, custom)
                            Disconnect from the DB as often as you can

                            Availability ⇒ Distributed caches can be made durable / reliable
                            and shared with JVM-level clustering




Confidential – for information of designated recipient only. Copyright Terracotta 2006
Guidelines: NAM helps Partitioned Scale Out

                            Simplicity ⇒ Never simple…but SEDA, MapReduce, master /
                            worker, Scala, all help

                            Scalability ⇒ Share the data not the control flow to optimize
                            locality

                            Availability ⇒ Guarantee either or both the events and the data
                            cannot be lost



                            Honestly. Punt on partitioning if you can. Most people who need
                            it will know, based on the use case outrunning disk, network,
                            CPU, etc.
                               – Example: Pushing more than 1GBit on a single node where multiple nodes
                                        could each push 1GBit


Confidential – for information of designated recipient only. Copyright Terracotta 2006
Thank You

                            Learn more at http://www.terracotta.org/




Confidential – for information of designated recipient only. Copyright Terracotta 2006

Mais conteúdo relacionado

Mais procurados

Diagnosability versus The Cloud, Toronto 2011-04-21
Diagnosability versus The Cloud, Toronto 2011-04-21Diagnosability versus The Cloud, Toronto 2011-04-21
Diagnosability versus The Cloud, Toronto 2011-04-21Cary Millsap
 
MySQL HA Solutions
MySQL HA SolutionsMySQL HA Solutions
MySQL HA SolutionsMat Keep
 
MySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached APIMySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached APIMat Keep
 
Playing in the Same Sandbox: MySQL and Oracle
Playing in the Same Sandbox:  MySQL and OraclePlaying in the Same Sandbox:  MySQL and Oracle
Playing in the Same Sandbox: MySQL and Oraclelynnferrante
 
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...NetApp
 
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Hiroshi Ono
 
Effective Usage of SQL Server 2005 Database Mirroring
Effective Usage of SQL Server 2005 Database MirroringEffective Usage of SQL Server 2005 Database Mirroring
Effective Usage of SQL Server 2005 Database Mirroringwebhostingguy
 
Architecting a Private Cloud - Cloud Expo
Architecting a Private Cloud - Cloud ExpoArchitecting a Private Cloud - Cloud Expo
Architecting a Private Cloud - Cloud Exposmw355
 
Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Chris Richardson
 
Conference tutorial: MySQL Cluster as NoSQL
Conference tutorial: MySQL Cluster as NoSQLConference tutorial: MySQL Cluster as NoSQL
Conference tutorial: MySQL Cluster as NoSQLSeveralnines
 
Securing Your Endpoints Using Novell ZENworks Endpoint Security Management
Securing Your Endpoints Using Novell ZENworks Endpoint Security ManagementSecuring Your Endpoints Using Novell ZENworks Endpoint Security Management
Securing Your Endpoints Using Novell ZENworks Endpoint Security ManagementNovell
 
Engineered Systems: Oracle's Vision for the Future
Engineered Systems: Oracle's Vision for the FutureEngineered Systems: Oracle's Vision for the Future
Engineered Systems: Oracle's Vision for the FutureBob Rhubart
 
The Native NDB Engine for Memcached
The Native NDB Engine for MemcachedThe Native NDB Engine for Memcached
The Native NDB Engine for MemcachedJohn David Duncan
 
WAS Support & Monitoring Tools
WAS Support & Monitoring ToolsWAS Support & Monitoring Tools
WAS Support & Monitoring ToolsRoyal Cyber Inc.
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]Ryan Cuprak
 
Programming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyProgramming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyC2B2 Consulting
 

Mais procurados (20)

SQL Server High Availability
SQL Server High AvailabilitySQL Server High Availability
SQL Server High Availability
 
Diagnosability versus The Cloud, Toronto 2011-04-21
Diagnosability versus The Cloud, Toronto 2011-04-21Diagnosability versus The Cloud, Toronto 2011-04-21
Diagnosability versus The Cloud, Toronto 2011-04-21
 
MySQL HA Solutions
MySQL HA SolutionsMySQL HA Solutions
MySQL HA Solutions
 
SQL Server User Group 02/2009
SQL Server User Group 02/2009SQL Server User Group 02/2009
SQL Server User Group 02/2009
 
MySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached APIMySQL Cluster NoSQL Memcached API
MySQL Cluster NoSQL Memcached API
 
Playing in the Same Sandbox: MySQL and Oracle
Playing in the Same Sandbox:  MySQL and OraclePlaying in the Same Sandbox:  MySQL and Oracle
Playing in the Same Sandbox: MySQL and Oracle
 
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
 
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
 
Effective Usage of SQL Server 2005 Database Mirroring
Effective Usage of SQL Server 2005 Database MirroringEffective Usage of SQL Server 2005 Database Mirroring
Effective Usage of SQL Server 2005 Database Mirroring
 
Architecting a Private Cloud - Cloud Expo
Architecting a Private Cloud - Cloud ExpoArchitecting a Private Cloud - Cloud Expo
Architecting a Private Cloud - Cloud Expo
 
Orcale Presentation
Orcale PresentationOrcale Presentation
Orcale Presentation
 
Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)
 
Conference tutorial: MySQL Cluster as NoSQL
Conference tutorial: MySQL Cluster as NoSQLConference tutorial: MySQL Cluster as NoSQL
Conference tutorial: MySQL Cluster as NoSQL
 
Shalini xs10
Shalini xs10Shalini xs10
Shalini xs10
 
Securing Your Endpoints Using Novell ZENworks Endpoint Security Management
Securing Your Endpoints Using Novell ZENworks Endpoint Security ManagementSecuring Your Endpoints Using Novell ZENworks Endpoint Security Management
Securing Your Endpoints Using Novell ZENworks Endpoint Security Management
 
Engineered Systems: Oracle's Vision for the Future
Engineered Systems: Oracle's Vision for the FutureEngineered Systems: Oracle's Vision for the Future
Engineered Systems: Oracle's Vision for the Future
 
The Native NDB Engine for Memcached
The Native NDB Engine for MemcachedThe Native NDB Engine for Memcached
The Native NDB Engine for Memcached
 
WAS Support & Monitoring Tools
WAS Support & Monitoring ToolsWAS Support & Monitoring Tools
WAS Support & Monitoring Tools
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
Programming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyProgramming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and Grizzly
 

Destaque

The Social Web & Your Library
The Social Web & Your LibraryThe Social Web & Your Library
The Social Web & Your LibraryBobbi Newman
 
Simulating Production with Clocker
Simulating Production with ClockerSimulating Production with Clocker
Simulating Production with ClockerAndrew Kennedy
 
concierto oli
concierto oliconcierto oli
concierto olilaulolis
 
SXSW How Companies Created Buzz
SXSW How Companies Created Buzz SXSW How Companies Created Buzz
SXSW How Companies Created Buzz Shashi Bellamkonda
 
Infostudio Chocolate Bars 2
Infostudio Chocolate Bars 2Infostudio Chocolate Bars 2
Infostudio Chocolate Bars 2becz_y
 
04 march 08 :: SkewTube @ Swarthmore
04 march 08 :: SkewTube @ Swarthmore04 march 08 :: SkewTube @ Swarthmore
04 march 08 :: SkewTube @ SwarthmoreJulie Levin Russo
 
Firefox的安全性
Firefox的安全性Firefox的安全性
Firefox的安全性Liu Xing
 
Failure Is Guaranteed: Internet Marketing's Greatest Strength
Failure Is Guaranteed: Internet Marketing's Greatest StrengthFailure Is Guaranteed: Internet Marketing's Greatest Strength
Failure Is Guaranteed: Internet Marketing's Greatest StrengthIan Lurie
 
Reaching Your Patrons in the Brave New World of the Social Web
Reaching Your Patrons in the Brave New World of the Social WebReaching Your Patrons in the Brave New World of the Social Web
Reaching Your Patrons in the Brave New World of the Social WebBobbi Newman
 
The Universe Problem: Poll results, Facebook and the 2012 Presidential campaign
The Universe Problem: Poll results, Facebook and the 2012 Presidential campaignThe Universe Problem: Poll results, Facebook and the 2012 Presidential campaign
The Universe Problem: Poll results, Facebook and the 2012 Presidential campaignIan Lurie
 
CIB W78 2007 - Comparison of distance learning courses
CIB W78 2007 - Comparison of distance learning coursesCIB W78 2007 - Comparison of distance learning courses
CIB W78 2007 - Comparison of distance learning coursesRobert Klinc
 
Healthcare, Meet Social Media
Healthcare, Meet Social MediaHealthcare, Meet Social Media
Healthcare, Meet Social MediaSimon Young
 
Set the World on Fire, keynote, Colorado Association of Libraries
Set the World on Fire, keynote, Colorado Association of LibrariesSet the World on Fire, keynote, Colorado Association of Libraries
Set the World on Fire, keynote, Colorado Association of LibrariesBobbi Newman
 

Destaque (20)

Etrange
EtrangeEtrange
Etrange
 
The Social Web & Your Library
The Social Web & Your LibraryThe Social Web & Your Library
The Social Web & Your Library
 
Piano
PianoPiano
Piano
 
Simulating Production with Clocker
Simulating Production with ClockerSimulating Production with Clocker
Simulating Production with Clocker
 
connector
connectorconnector
connector
 
U L Budayakerja
U L  BudayakerjaU L  Budayakerja
U L Budayakerja
 
concierto oli
concierto oliconcierto oli
concierto oli
 
SXSW How Companies Created Buzz
SXSW How Companies Created Buzz SXSW How Companies Created Buzz
SXSW How Companies Created Buzz
 
Infostudio Chocolate Bars 2
Infostudio Chocolate Bars 2Infostudio Chocolate Bars 2
Infostudio Chocolate Bars 2
 
04 march 08 :: SkewTube @ Swarthmore
04 march 08 :: SkewTube @ Swarthmore04 march 08 :: SkewTube @ Swarthmore
04 march 08 :: SkewTube @ Swarthmore
 
Firefox的安全性
Firefox的安全性Firefox的安全性
Firefox的安全性
 
Failure Is Guaranteed: Internet Marketing's Greatest Strength
Failure Is Guaranteed: Internet Marketing's Greatest StrengthFailure Is Guaranteed: Internet Marketing's Greatest Strength
Failure Is Guaranteed: Internet Marketing's Greatest Strength
 
Reaching Your Patrons in the Brave New World of the Social Web
Reaching Your Patrons in the Brave New World of the Social WebReaching Your Patrons in the Brave New World of the Social Web
Reaching Your Patrons in the Brave New World of the Social Web
 
The Universe Problem: Poll results, Facebook and the 2012 Presidential campaign
The Universe Problem: Poll results, Facebook and the 2012 Presidential campaignThe Universe Problem: Poll results, Facebook and the 2012 Presidential campaign
The Universe Problem: Poll results, Facebook and the 2012 Presidential campaign
 
CIB W78 2007 - Comparison of distance learning courses
CIB W78 2007 - Comparison of distance learning coursesCIB W78 2007 - Comparison of distance learning courses
CIB W78 2007 - Comparison of distance learning courses
 
Interactive Marketing
Interactive MarketingInteractive Marketing
Interactive Marketing
 
Luis Felipe Pacheco LLanes, Senior OCM
Luis Felipe Pacheco LLanes, Senior OCMLuis Felipe Pacheco LLanes, Senior OCM
Luis Felipe Pacheco LLanes, Senior OCM
 
Video Games and Reader's Advisory
Video Games and Reader's AdvisoryVideo Games and Reader's Advisory
Video Games and Reader's Advisory
 
Healthcare, Meet Social Media
Healthcare, Meet Social MediaHealthcare, Meet Social Media
Healthcare, Meet Social Media
 
Set the World on Fire, keynote, Colorado Association of Libraries
Set the World on Fire, keynote, Colorado Association of LibrariesSet the World on Fire, keynote, Colorado Association of Libraries
Set the World on Fire, keynote, Colorado Association of Libraries
 

Semelhante a Ari Zilka Cluster Architecture Patterns

Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With TerracottaPT.JUG
 
Clustered Architecture Patterns Delivering Scalability And Availability
Clustered Architecture Patterns Delivering Scalability And AvailabilityClustered Architecture Patterns Delivering Scalability And Availability
Clustered Architecture Patterns Delivering Scalability And AvailabilityConSanFrancisco123
 
The Impact of Hardware and Software Version Changes on Apache Kafka Performan...
The Impact of Hardware and Software Version Changes on Apache Kafka Performan...The Impact of Hardware and Software Version Changes on Apache Kafka Performan...
The Impact of Hardware and Software Version Changes on Apache Kafka Performan...Paul Brebner
 
Jug Lugano - Scale over the limits
Jug Lugano - Scale over the limitsJug Lugano - Scale over the limits
Jug Lugano - Scale over the limitsDavide Carnevali
 
Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007
Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007
Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007Baruch Sadogursky
 
New Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceNew Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceAnil Nair
 
Building Reliable Cloud Storage with Riak and CloudStack - Andy Gross, Chief ...
Building Reliable Cloud Storage with Riak and CloudStack - Andy Gross, Chief ...Building Reliable Cloud Storage with Riak and CloudStack - Andy Gross, Chief ...
Building Reliable Cloud Storage with Riak and CloudStack - Andy Gross, Chief ...buildacloud
 
Oracle RAC Internals - The Cache Fusion Edition
Oracle RAC Internals - The Cache Fusion EditionOracle RAC Internals - The Cache Fusion Edition
Oracle RAC Internals - The Cache Fusion EditionMarkus Michalewicz
 
Caching principles-solutions
Caching principles-solutionsCaching principles-solutions
Caching principles-solutionspmanvi
 
Securing Millions of Devices
Securing Millions of DevicesSecuring Millions of Devices
Securing Millions of DevicesKai Hudalla
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE
 
Oracle exalytics deployment for high availability
Oracle exalytics deployment for high availabilityOracle exalytics deployment for high availability
Oracle exalytics deployment for high availabilityPaulo Fagundes
 
Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterTim Ellison
 
Windows Azure Interoperability
Windows Azure InteroperabilityWindows Azure Interoperability
Windows Azure InteroperabilityMihai Dan Nadas
 
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2020年8月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2020年8月版]【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2020年8月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2020年8月版]オラクルエンジニア通信
 

Semelhante a Ari Zilka Cluster Architecture Patterns (20)

Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With Terracotta
 
Clustered Architecture Patterns Delivering Scalability And Availability
Clustered Architecture Patterns Delivering Scalability And AvailabilityClustered Architecture Patterns Delivering Scalability And Availability
Clustered Architecture Patterns Delivering Scalability And Availability
 
The Impact of Hardware and Software Version Changes on Apache Kafka Performan...
The Impact of Hardware and Software Version Changes on Apache Kafka Performan...The Impact of Hardware and Software Version Changes on Apache Kafka Performan...
The Impact of Hardware and Software Version Changes on Apache Kafka Performan...
 
Terracotta DSO
Terracotta DSOTerracotta DSO
Terracotta DSO
 
Jug Lugano - Scale over the limits
Jug Lugano - Scale over the limitsJug Lugano - Scale over the limits
Jug Lugano - Scale over the limits
 
Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007
Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007
Breaking The Clustering Limits @ AlphaCSP JavaEdge 2007
 
New Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceNew Generation Oracle RAC Performance
New Generation Oracle RAC Performance
 
XS Boston 2008 Network Topology
XS Boston 2008 Network TopologyXS Boston 2008 Network Topology
XS Boston 2008 Network Topology
 
Building Reliable Cloud Storage with Riak and CloudStack - Andy Gross, Chief ...
Building Reliable Cloud Storage with Riak and CloudStack - Andy Gross, Chief ...Building Reliable Cloud Storage with Riak and CloudStack - Andy Gross, Chief ...
Building Reliable Cloud Storage with Riak and CloudStack - Andy Gross, Chief ...
 
Oracle RAC Internals - The Cache Fusion Edition
Oracle RAC Internals - The Cache Fusion EditionOracle RAC Internals - The Cache Fusion Edition
Oracle RAC Internals - The Cache Fusion Edition
 
Caching principles-solutions
Caching principles-solutionsCaching principles-solutions
Caching principles-solutions
 
The Very Very Latest In Database Development - Lucas Jellema - Oracle OpenWor...
The Very Very Latest In Database Development - Lucas Jellema - Oracle OpenWor...The Very Very Latest In Database Development - Lucas Jellema - Oracle OpenWor...
The Very Very Latest In Database Development - Lucas Jellema - Oracle OpenWor...
 
Securing Millions of Devices
Securing Millions of DevicesSecuring Millions of Devices
Securing Millions of Devices
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
 
Oracle exalytics deployment for high availability
Oracle exalytics deployment for high availabilityOracle exalytics deployment for high availability
Oracle exalytics deployment for high availability
 
Grizzly 20080925 V2
Grizzly 20080925 V2Grizzly 20080925 V2
Grizzly 20080925 V2
 
Five cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark fasterFive cool ways the JVM can run Apache Spark faster
Five cool ways the JVM can run Apache Spark faster
 
Windows Azure Interoperability
Windows Azure InteroperabilityWindows Azure Interoperability
Windows Azure Interoperability
 
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2020年8月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2020年8月版]【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2020年8月版]
【旧版】Oracle Exadata Cloud Service:サービス概要のご紹介 [2020年8月版]
 
Clustering van IT-componenten
Clustering van IT-componentenClustering van IT-componenten
Clustering van IT-componenten
 

Mais de deimos

Aspect Orientated Programming in Ruby
Aspect Orientated Programming in RubyAspect Orientated Programming in Ruby
Aspect Orientated Programming in Rubydeimos
 
Randy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural PrinciplesRandy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural Principlesdeimos
 
Remy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQueryRemy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQuerydeimos
 
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The JvmOla Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvmdeimos
 
Joe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand DwrJoe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand Dwrdeimos
 
Aslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec BddAslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec Bdddeimos
 
Venkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In GroovyVenkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In Groovydeimos
 
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic LanguagesVenkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic Languagesdeimos
 
Udi Dahan Intentions And Interfaces
Udi Dahan Intentions And InterfacesUdi Dahan Intentions And Interfaces
Udi Dahan Intentions And Interfacesdeimos
 
Tim Mackinnon Agile And Beyond
Tim Mackinnon Agile And BeyondTim Mackinnon Agile And Beyond
Tim Mackinnon Agile And Beyonddeimos
 
Steve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And SerendipitySteve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And Serendipitydeimos
 
Stefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The WebStefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The Webdeimos
 
Stefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To RestStefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To Restdeimos
 
Rod Johnson Cathedral
Rod Johnson CathedralRod Johnson Cathedral
Rod Johnson Cathedraldeimos
 
Mike Stolz Dramatic Scalability
Mike Stolz Dramatic ScalabilityMike Stolz Dramatic Scalability
Mike Stolz Dramatic Scalabilitydeimos
 
Matt Youill Betfair
Matt Youill BetfairMatt Youill Betfair
Matt Youill Betfairdeimos
 
Pete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two SystemsPete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two Systemsdeimos
 
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA RegistryPaul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registrydeimos
 
Ola Bini Evolving The Java Platform
Ola Bini Evolving The Java PlatformOla Bini Evolving The Java Platform
Ola Bini Evolving The Java Platformdeimos
 
Neal Gafter Java Evolution
Neal Gafter Java EvolutionNeal Gafter Java Evolution
Neal Gafter Java Evolutiondeimos
 

Mais de deimos (20)

Aspect Orientated Programming in Ruby
Aspect Orientated Programming in RubyAspect Orientated Programming in Ruby
Aspect Orientated Programming in Ruby
 
Randy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural PrinciplesRandy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural Principles
 
Remy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQueryRemy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQuery
 
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The JvmOla Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvm
 
Joe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand DwrJoe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand Dwr
 
Aslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec BddAslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec Bdd
 
Venkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In GroovyVenkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In Groovy
 
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic LanguagesVenkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic Languages
 
Udi Dahan Intentions And Interfaces
Udi Dahan Intentions And InterfacesUdi Dahan Intentions And Interfaces
Udi Dahan Intentions And Interfaces
 
Tim Mackinnon Agile And Beyond
Tim Mackinnon Agile And BeyondTim Mackinnon Agile And Beyond
Tim Mackinnon Agile And Beyond
 
Steve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And SerendipitySteve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And Serendipity
 
Stefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The WebStefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The Web
 
Stefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To RestStefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To Rest
 
Rod Johnson Cathedral
Rod Johnson CathedralRod Johnson Cathedral
Rod Johnson Cathedral
 
Mike Stolz Dramatic Scalability
Mike Stolz Dramatic ScalabilityMike Stolz Dramatic Scalability
Mike Stolz Dramatic Scalability
 
Matt Youill Betfair
Matt Youill BetfairMatt Youill Betfair
Matt Youill Betfair
 
Pete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two SystemsPete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two Systems
 
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA RegistryPaul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registry
 
Ola Bini Evolving The Java Platform
Ola Bini Evolving The Java PlatformOla Bini Evolving The Java Platform
Ola Bini Evolving The Java Platform
 
Neal Gafter Java Evolution
Neal Gafter Java EvolutionNeal Gafter Java Evolution
Neal Gafter Java Evolution
 

Último

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Último (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

Ari Zilka Cluster Architecture Patterns

  • 1. Clustered Architecture Patterns: Delivering Scalability and Availability Qcon London, 2008 Ari Zilka – Terracotta CTO and Founder Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 2. Agenda Patterns from Years of Tier-Based Computing Network Attached Memory / JVM-level clustering Applying NAM To Eliminate the DB Use Case #1: Hibernate Use Case #2: Service Orientation Lessons Learned Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 3. The State Monster At Walmart.com we started like everyone else: stateless + load-balanced + Oracle (24 cpus, 24GB) Grew up through distributed caching + partitioning + write behind We realized that “ilities” conflict – Scalability: avoid bottlenecks – Availability: write to disk ( and I/O bottleneck ) – Simplicity: No copy-on-read / copy-on-write semantics (relentless tuning, bug fixing) And yet we needed a stateless runtime for safe operation – Start / stop any node regardless of workload – Cluster-wide reboot needed to be quick; could not wait for caches to warm The “ilities” clearly get affected by architecture direction and the stateless model leads us down a precarious path Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 4. The Precarious Path: Our tools lead us astray Stateless load-balanced architecture ⇒ bottleneck on DB In-memory session replication ⇒ bottleneck on CPU, Memory Clustered DB cache ⇒ bottleneck on Memory, DB Memcache ⇒ bottleneck on server JMS-based replicated cache ⇒ bottleneck on network …Pushing the problem between our app tier CPU and the data tier I/O Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 5. CRUD Pules Up… Types of clustering: – Load-balanced (non-partitioned) Scale Out – Partitioned Scale Out Both Trade-off Scalability or availability (usually by hand) in different ways scalability availability …and everything we do forces the trade-offs Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 6. Changing the Assumptions: JVM-level Clustering Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 7. Performance + Reliability 10X throughput over conventional APIs – All Reads from Cache (implicit locality) – All Writes are Deltas-only – Write in log-forward fashion (no disk seek time) – Statistics and Heuristics (greedy locks) Scale out the Terracotta Server – Simple form of Active / active available today – V1.0 GA this year Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 8. HelloClusteredWorld (from our pending Apress book) Chapter 3: Definitive Guide to Terracotta public class HelloClusteredWorld { private static final String message = quot;Hello Clustered World!quot;; private static final int length = message.length(); private static char[] buffer = new char [length ]; private static int loopCounter; public static void main( String args[] ) throws Exception { while( true ) { synchronized( buffer ) { int messageIndex = loopCounter++ % length; if(messageIndex == 0) java.util.Arrays.fill(buffer, '¥u0000'); buffer[messageIndex] = message.charAt(messageIndex); System.out.println( buffer ); Thread.sleep( 100 ); } } } } Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 9. HelloClusteredWorld Sequence Diagram Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 10. HelloClusteredWorld Config File <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <tc:tc-config xmlns:tc=quot;http://www.terracotta.org/configquot; xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot; xsi:schemaLocation=quot;http://www.terracotta.org/schema/terracotta-4.xsdquot;> <!-- servers and clients stanzas ommitted --> <application> <dso> <roots> <root> <field-name>HelloClusteredWorld.buffer</field-name> </root> <root> <field-name>HelloClusteredWorld.loopCounter</field-name> </root> </roots> <instrumented-classes> <include> <class-expression>HelloClusteredWorld</class-expression> </include> </instrumented-classes> <locks> <autolock> <lock-level>write</lock-level> <method-expression>void HelloClusteredWorld.main(..)</method-expression> </autolock> </locks> </dso> </application> </tc:tc-config> Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 11. Applying NAM To DB Offload Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 12. Stateless By Hand is Cumbersome and Inefficient User Conversation Baseline Application 3 User Requests during one Conversation 2 POJO Updates per Request Total DB Load: 9 Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 13. So We Add Hibernate User Conversation Add Hibernate Eliminate Direct Connection to the DB via JDBC Eliminate Hand- Coded SQL Eliminate Intermediate POJO Updates Total DB Load: 6 Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 14. Then We Turn on Caching User Conversation Enable 2nd Level cache Eliminates Intermediate Loads Total DB Load: 4 Serialization is required BLOB Replication requirements are heavy Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 15. So We Disconnect But Lose Availability User Conversation Detached POJOs Eliminates Intermediate Commits Total DB Load: 2 Can lose state in case of failure! Replication is expensive Hibernate says to keep graphs small Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 16. JVM-Level Clustering + Hibernate Together Cluster 2nd Level Cache - Hibernate Performance Curve Level 2 EHCache Support Built in to the product Advantages Coherent Cache Across the cluster Easy to integrate with existing applications Performs very well Eliminate the artificial cache misses in clustered environment Disadvantages Objects are represented as BLOBs by Hibernate Doesn’t take direct advantage of Terracotta Scale-Out Features Cluster Detached POJOs - Hibernate Performance Curve Level 3 Cluster Pure POJOs Re-attach Session in the same JVM or a different JVM Advantages Scales the best Take Advantage of POJOs - Fine-grained changes, replicate only where resident Disadvantages Some code changes required to refactor Hibernate’s beginTransaction(), commit() Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 17. Demonstration Application Simple CRUD application – Based on Hibernate Tutorial (Person, Event) – Already Refactored for Detached POJOs – Simple Session Management in Terracotta Environment - POJO wrapper – Detached Strategy requires a flush operation CREATE OPERATION – Creates a new Person UPDATE OPERATION – UpdateAge -> updates the age – UpdateEvent -> creates a new event and adds to Person READ OPERATION – Sets the current object to a random Person DELETE OPERATION – Not implemented FLUSH OPERATION – Re-attaches Session and writes modified POJO to DB Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 18. Source Code DETACHED MODE Person person = (Person) session.load(Person.class, (long) 1); person.getAge(); session.getTransaction().commit(); HibernateUtil.getSessionFactory().close(); for (int i = 0; i < TRANSACTIONS; i++) { person.setAge((int) i % 100); } // Flush the changes session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.saveOrUpdate(person); session.getTransaction().commit(); HibernateUtil.getSessionFactory().close(); HIBERNATE LEVEL2 CACHE MODE for (int i = 0; i < TRANSACTIONS; i++) { session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); person = (Person) session.load(Person.class, (long) 1); // update the person's age to a quot;randomquot; number between 0 and 99 person.setAge((int) i % 100); session.getTransaction().commit(); if (i % 1000 == 0) { System.out.print(quot;.quot;); System.out.flush(); } } Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 19. Performance Tests ReadAgeHibernate – 25k iterations » Reads a Person object, reads the age, commits – Run with and without 2nd level cache UpdateAgeHibernate – 25k iterations » Reads a Person object, updates the age, commits – Run with and without 2nd level cache ReadAgeTC – Reads a Person object – Sets person object into Terracotta clustered graph – 25k iterations » Reads the age UpdateAgeTC – Reads a Person object – Sets person object into Terracotta clustered graph – 25k iterations » Updates the age – Commits Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 20. Results: Hibernate vs. Detached POJOs Operation Type Results Update Hibernate ~ 1000 ops / sec Update Hibernate + 2nd Level Cache ~ 1800 ops / sec Update Terracotta ~ 7000 ops / sec Operation Type Results Read Hibernate ~ 1000 ops / sec Read Hibernate + 2nd Level Cache ~ 1800 ops / sec Read Terracotta ~ 500,000 ops / sec Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 21. Case Studies Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 22. Comparison: non-partitioned vs. partitioned scale out Load Balanced Application – Publishing Company – Happy with availability and simplicity using Hibernate + Oracle – Not happy with scalability – SOLUTION: Hibernate disconnected mode Partitioned Application – Travel Company – Happy with MQ-based availability, 4 dependent apps mean no API changes allowed – System of Record too expensive to keep scaling – SOLUTION: Proxy the System or Record; Partition for scale Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 23. Large Publisher Gets Caught Down the Path with Oracle Scaling Out or Up? Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 24. Breaking the Pattern without Leaving “Load-Balanced” World •$1.5 Million DB & HW savings •Doubled business •More than halved database load Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 25. User Was Happy Database was still the SoR which kept reporting and backup simple Scalability was increased by over 10X Availability was not compromised since test data was still on disk, but in memory-resident format instead of relational …simple scalability + availability Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 26. Example Caching Service Reduce utilization of System of Record Support 4 BUs 10K queries / second today Headroom for 40K queries / second (Note: all performance goals) Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 27. BU #1 BU #2 BU #3 BU #4 Data center MQ API MQ API Websphere MQ Series - MOM Messaging Infrastructure (JMS Topics) Existing MQ Cache ... Cache Node 1 Node 27 Terracotta Server Terracotta Server single pair Caching Layer SoR API SoR Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 28. BU #1 BU #2 BU #3 BU #4 Data center MQ API MQ API Websphere MQ Series - MOM Messaging Infrastructure (JMS Topics) Existing MQ Cache Cache Cache ... Cache ... Node 1 Node 14 Node 15 Node 27 Terracotta Server Terracotta Server Terracotta Server Terracotta Server Caching Layer SoR API SoR Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 29. BU #1 BU #2 BU #3 BU #4 Data center MQ API MQ API Websphere MQ Series - MOM Messaging Infrastructure (JMS Topics) Existing MQ Stateless Software Load Balancer Cache ... Cache Cache ... Cache Node 1 Node 14 Node 15 Node 27 Terracotta Server Terracotta Server Terracotta Server Terracotta Server Caching Layer SoR API SoR Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 30. User Was Unhappy Simplicity was lost. The Partitioning leaked up the application stack Availability was no longer easy (failure had to partition as well) Scalability was the only “Scale Out Dimension” delivered Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 31. Lessons Learned: Scalability + Availability + Simplicity Stop the Madness – Stop the hacking! Stop the clustering! – Start naïve and get more sophisticated on demand Balancing the 3 requires scalable, durable memory across JVM boundaries (spread out to scale out) Simplicity ⇒ Require no specific coding model and no hard- coded replication / persistence points Scalability ⇒ Read from Local Memory; write only the deltas in batches Availability ⇒ Write to external process + write to disk Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 32. JVM-level Clustering Addresses the Trade-offs “ILITIES” SIMPLE SCALABLE AVAILABLE • Honors Language Spec • Virtual Heap • Persist to disk at wire across JVM boundaries speed • Read from Heap • Transparent to source • Active / Passive and • Write deltas, only where code Active / Active needed strategies • Thread Coordination too Scale Out Model Models Models Models • Load balanced stays • Load balanced scales • Load balanced apps naïve through implicit locality made available by writing heap to disk • Partitioned stays POJO • Partitioned scales by (abstractions are easy) avoiding data sharing • Partitioned made available by using the cluster to store workflow Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 33. Guidelines: NAM helps Load-Balanced Scale Out Simplicity ⇒ Ignore the impedance mismatch. Don’t be afraid of the DB. Scalability ⇒ Just cache it! (EHCache, JBossCache, custom) Disconnect from the DB as often as you can Availability ⇒ Distributed caches can be made durable / reliable and shared with JVM-level clustering Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 34. Guidelines: NAM helps Partitioned Scale Out Simplicity ⇒ Never simple…but SEDA, MapReduce, master / worker, Scala, all help Scalability ⇒ Share the data not the control flow to optimize locality Availability ⇒ Guarantee either or both the events and the data cannot be lost Honestly. Punt on partitioning if you can. Most people who need it will know, based on the use case outrunning disk, network, CPU, etc. – Example: Pushing more than 1GBit on a single node where multiple nodes could each push 1GBit Confidential – for information of designated recipient only. Copyright Terracotta 2006
  • 35. Thank You Learn more at http://www.terracotta.org/ Confidential – for information of designated recipient only. Copyright Terracotta 2006