SlideShare a Scribd company logo
1 of 84
Best Practices
  for Scaling Java
 Applications with
Distributed Caching

                Copyright © 2011 Cacheonix Systems
Introduction
Presenter: Slava Imeshev
  •  Founder at Cacheonix Systems developing
     reliable clustered cache Cacheonix
  •  Core expertise in reliable distributed systems
  •  simeshev@cacheonix.com




                                        Copyright © 2011 Cacheonix Systems
Copyright © 2011 Cacheonix Systems
Definitions



               Copyright © 2011 Cacheonix Systems
Performance
Number of operations per unit of time
•  Requests per second
•  Pages per second
•  Transactions per second

Performance is not scalability (is 200 pages/s
   more scalable than 150 pages/s?)




                                        Copyright © 2011 Cacheonix Systems
Scalability
  Ability to handle additional load by adding
           more computational resources
•  Vertical scalability
•  Horizontal scalability




                                       Copyright © 2011 Cacheonix Systems
Vertical Scalability
•  Vertical scalability is handling additional
   load by adding more power to a single
   machine
•  Vertical scalability is trivial to achieve. Just
   switch to a faster CPU, add more RAM or
   replace an HDD with an SSD
•  Vertical scalability has a hard limit (2-5
   times improvement in capacity)




                                          Copyright © 2011 Cacheonix Systems
Horizontal Scalability
•  Horizontal scalability is handling additional
   load by adding more servers
•  Horizontal scalability offers much greater
   benefit (2-1000 times improvement in
   capacity)
•  Horizontal scalability is much harder to
   achieve as adding servers requires
   ensuring data consistency and coherent
   view of cache updates.




                                        Copyright © 2011 Cacheonix Systems
Scalability Problem



                 Copyright © 2011 Cacheonix Systems
Normal Situation




               Copyright © 2011 Cacheonix Systems
System Cannot Scale
•  Added 2 more app
   servers
•  Expected x3
   increase in capacity
•  Got only x2
•  System hit
   scalability limit
•  Database capacity
   is a bottleneck



                          Copyright © 2011 Cacheonix Systems
Cache
An area of local memory that holds a copy of
   frequently accessed data that is otherwise
         expensive to get or compute




                                     Copyright © 2011 Cacheonix Systems
Key Cache Parameters
•  Cache size defines how many elements a cache
   can hold




                                      Copyright © 2011 Cacheonix Systems
Key Cache Parameters
•  Cache size defines how many elements a cache
   can hold
•  Cache eviction algorithm defines what to do when
   the number of elements in cache exceeds the size




                                        Copyright © 2011 Cacheonix Systems
Key Cache Parameters
•  Cache size defines how many elements a cache
   can hold
•  Cache eviction algorithm defines what to do when
   the number of elements in cache exceeds the size
•  Time-to-live defines time after that a cache key
   should be remove from the cache (expired)




                                        Copyright © 2011 Cacheonix Systems
Cache Eviction Algorithm
Least Recently Used (LRU) works best
•  Catches temporal and spatial locality




                                           Copyright © 2011 Cacheonix Systems
Cache Eviction Algorithm
Least Recently Used (LRU) works best
•  Catches temporal and spatial locality

Most of other cache algorithms (MRU, LFU, etc)
•  Not applicable to most of practical situations
•  Subject of cache poisoning
•  Expensive from performance point of view




                                           Copyright © 2011 Cacheonix Systems
Cache Types
•  Application cache
•  Second level (L2) cache
•  Hybrid cache




                             Copyright © 2011 Cacheonix Systems
Application Cache




               Copyright © 2011 Cacheonix Systems
Level-2 Cache




             Copyright © 2011 Cacheonix Systems
Hybrid Cache




            Copyright © 2011 Cacheonix Systems
Cache Architectures
•  Local
•  Distributed




                 Copyright © 2011 Cacheonix Systems
Local Cache
•  All elements are stored in local memory
•  Size is limited by a single JVM’s heap




                                 Copyright © 2011 Cacheonix Systems
Distributed Cache
•    Cache elements are distributed across a set
     servers (a cluster)
•    Cache size is a sum of cache partitions in case
     of a partitioned cache
•    Cache size can be much bigger than a single
     Java VM
•    Distributed cache can scale horizontally by
     adding more servers




                                        Copyright © 2011 Cacheonix Systems
Distributed Cache Example
       (Cacheonix)




                   Copyright © 2011 Cacheonix Systems
Distributed Cache
Important characteristics:
•  Partitioning for load balancing




                                     Copyright © 2011 Cacheonix Systems
Distributed Cache
Important characteristics:
•  Partitioning for load balancing
•  Replication for high availability




                                       Copyright © 2011 Cacheonix Systems
Distributed Cache
Important characteristics:
•  Partitioning for load balancing
•  Replication for high availability
•  Cache coherence for data consistency




                                    Copyright © 2011 Cacheonix Systems
Distributed Cache
Important capabilities:
•  Partitioning for load balancing
•  Replication for high availability
•  Cache coherence for data consistency
•  Fault tolerance for high availability

Not all systems have these capabilities




                                          Copyright © 2011 Cacheonix Systems
Availability and Fault
      Tolerance
Ability to continue to operate despite of
    failure of members of the cluster
•  When applied to distributed caching, HA
    means an ability to provide uninterrupted,
    consistent data access




                                      Copyright © 2011 Cacheonix Systems
Copyright © 2011 Cacheonix Systems
Solution to Scalability
       Problem 


                  Copyright © 2011 Cacheonix Systems
Add Distributed Cache
•  Bottleneck is
   removed
•  System is
   reading mostly
   from the
   cache
•  Distributed
   cache provides
   large cache
   and load
   balancing


                    Copyright © 2011 Cacheonix Systems
In-Process Distributed
            Cache
An in-process
distributed cache
provides memory-like
speed and coherent
and consistent data
access




                       Copyright © 2011 Cacheonix Systems
Copyright © 2011 Cacheonix Systems
Copyright © 2011 Cacheonix Systems
Best Practices



              Copyright © 2011 Cacheonix Systems
Best Practice: Scale Out
by Adding More Servers
           More cache nodes means:
           •  Smaller partition size
           •  Lesser node traffic
           •  Reduced load
           •  Smaller GC delays
           •  Higher availability




                          Copyright © 2011 Cacheonix Systems
Best Practice: Scale Out
by Adding More Servers
           More cache nodes means:
           •  Bigger distributed cache
           •  Better performance




                          Copyright © 2011 Cacheonix Systems
Best Practice: Design for
  Scalability Upfront
 •    Design for scalability won’t emerge on its own
 •    Design for loads the worst case x10
 •    Accommodate going distributed
 •    Good designs are easy to optimize




                                         Copyright © 2011 Cacheonix Systems
Best Practice:
Optimize before Caching
Optimize late:
•  Avoid premature optimization
•  Profile using a decent profiler. We prefer JProfiler
•  Grow a local profiling expert
•  Use synthetic point load tests
•  Run realistic end-to-end load tests



                                         Copyright © 2011 Cacheonix Systems
Best Practice: Automate
  Problem Detection
 Automate detection of performance problems:
 •  PMD
 •  FindBugs
 •  KlocWork




                                    Copyright © 2011 Cacheonix Systems
Best Practice: Stay Local
before Going Distributed
•  Scale vertically first (better CPU, more RAM)




                                          Copyright © 2011 Cacheonix Systems
Best Practice: Stay Local
before Going Distributed
•  Scale vertically first (better CPU, more RAM)
•  Go distributed only when opportunities for vertical
   scalability are completely exhausted




                                          Copyright © 2011 Cacheonix Systems
Best Practice: Stay Local
before Going Distributed
•  Scale vertically first (better CPU, more RAM)
•  Go distributed only when opportunities for vertical
   scalability are completely exhausted
•  A distributed cache is slower than a local one
   because it must use network I/O and more CPU to
   maintain coherence, partitioning and replication




                                          Copyright © 2011 Cacheonix Systems
Best Practice: Stay Local
before Going Distributed
•  Scale vertically first (better CPU, more RAM)
•  Go distributed only when opportunities for vertical
   scalability are completely exhausted
•  A distributed cache is slower than a local one
   because it must use network I/O and more CPU to
   maintain coherence, partitioning and replication
•  Distributed systems require additional
   configuration, testing and network infrastructure.


                                          Copyright © 2011 Cacheonix Systems
Best Practice: Stay Local
before Going Distributed
•  Scale vertically first (better CPU, more RAM)
•  Go distributed only when opportunities for vertical
   scalability are completely exhausted
•  A distributed cache is slower than a local one
   because it must use network I/O and more CPU to
   maintain coherence, partitioning and replication
•  Distributed systems require additional
   configuration, testing and network infrastructure.
•  There are some licensing costs associated with
   distributed caching solutions that work
                                          Copyright © 2011 Cacheonix Systems
Best Practice:
 Cache Right Objects
Cache objects that are expensive to get
•  Results of database queries
•  I/O
•  XML
•  XSL




                                      Copyright © 2011 Cacheonix Systems
Best Practice:
 Cache Right Objects
Cache objects that are expensive to get
•  Results of database queries
•  I/O
•  XML
•  XSL
Cache objects that are read-mostly
•  Guarantees high hit/miss ratio and
•  Low cache maintenance and
•  Low cache coherence and replication costs
                                     Copyright © 2011 Cacheonix Systems
Antipattern:
     “Cache Them All”
Don’t cache objects that are easy to get:
•  Caching makes them harder to get
•  Caching complicates design and
   implementation




                                       Copyright © 2011 Cacheonix Systems
Antipattern:
    “Cache Them All”
Don’t cache objects that are easy to get:
•  Caching makes them harder to get
•  Caching complicates design and
   implementation
Don’t cache write-mostly objects:
•  Little to no benefit
•  Cache maintenance becomes an expense


                                   Copyright © 2011 Cacheonix Systems
Copyright © 2011 Cacheonix Systems
Copyright © 2011 Cacheonix Systems
Best Practice: Implement
 java.io.Externalizable
Default Java serialization is too slow
•  Does a lot of useless things, automatically
•  Was developed with networked object
   transfers in mind
•  Is done by simply implementing signature
   interface java.io.Serializable


                                    Copyright © 2011 Cacheonix Systems
Best Practice: Implement
 java.io.Externalizable
java.io.Externalizable
•  Can be significantly faster (2-8 times
   than default serialization)
•  2-4 times smaller byte footprint – higher
   network throughput
•  Requires additional code


                                   Copyright © 2011 Cacheonix Systems
Externalizable Example




                 Copyright © 2011 Cacheonix Systems
Externalizable Example




                 Copyright © 2011 Cacheonix Systems
Externalizable Example




                 Copyright © 2011 Cacheonix Systems
Best Practice: Test for
    Serializability
•  You must ensure that the object that was
   received at another end is the object that was
   sent
•  Cache keys AND cached values routinely travel
   across the network
•  It is critical to write proper serialization tests
   for keys and values



                                        Copyright © 2011 Cacheonix Systems
Best Practice: Test for
    Serializability
•  Test pattern: Serialize, deserialize, compare




                                       Copyright © 2011 Cacheonix Systems
Best Practice: Test for
    Serializability




                  Copyright © 2011 Cacheonix Systems
Best Practice: Test for
    Serializability




                  Copyright © 2011 Cacheonix Systems
Best Practice: Test for
    Serializability




                  Copyright © 2011 Cacheonix Systems
Best Practice:
   Split Large RAM
Between Multiple JVMs
Big fat boxes have become common:
•  8 CPU cores 32Gb RAM
•  All modern 64 bit JVMs support large heaps




                                      Copyright © 2011 Cacheonix Systems
Best Practice:
   Split Large RAM
Between Multiple JVMs
Big fat boxes have become common:
•  8 CPU cores 32Gb RAM
•  All modern 64 bit JVMs support large heaps
Problem:
•  Large heaps mean long major GCs (10s of
   seconds)
•  Cluster nodes seem to appear gone causing
   cluster configuration jitter
                                      Copyright © 2011 Cacheonix Systems
Best Practice:
   Split Large RAM
Between Multiple JVMs
Solution: Split large RAM into multiple 1-2Gb JVMs
•  Distributed caching allows to split data processing
   into many JVMs.
•  Shorter major GCs mean lesser latency and more
   stable cluster
•  Nice side effects such as higher availability, better
   load balancing and improved concurrency

                                         Copyright © 2011 Cacheonix Systems
Best Practice:
Split Large RAM Between
       Multiple JVMs




                 Copyright © 2011 Cacheonix Systems
Problem: Distributed
Caching Adds Network
       Traffic
•  Remote partition access
•  Cache coherency traffic
•  Replication traffic




                             Copyright © 2011 Cacheonix Systems
Problem: Distributed
Caching Adds Network
       Traffic
•  Remote partition access
•  Cache coherency traffic
•  Replication traffic
Cache being on the same network with the
   application leads to:
•  Increased cache access latency
•  Increased application response time

                                   Copyright © 2011 Cacheonix Systems
Best Practice:
 Provide Dedicated
Network Infrastructure
Solution: Dedicate separate network to
    distributed cache traffic:
1.  Add a network card. Most of the modern
    rackmount servers already have two NICs
2.  Add a separate switch to serve the
    distributed cache traffic


                                    Copyright © 2011 Cacheonix Systems
Copyright © 2011 Cacheonix Systems
Best Practice: Use
       Multicast
•  Most of modern caching solutions efficiently
   utilize multicast.
•  If done right, multicast provides significant
   reduction in network traffic (~100 of times)




                                       Copyright © 2011 Cacheonix Systems
“Best Practice is
    a technique or
  methodology that,
 through experience
  and research, has
proven to reliably lead
 to a desired result.”
                 Copyright © 2011 Cacheonix Systems
Copyright © 2011 Cacheonix Systems
Q&A
Q: How does replication work in
  Cacheonix? Is it master/slave?
A: Cacheonix replication protocol is more
  advanced then master/slave. In Cacheonix
  every cache node carries a partition that it
  owns, and a set of partition replicas. This
  allows Cacheonix restore operational partition
  from a replica automatically and
  instantaneously.



                                       Copyright © 2011 Cacheonix Systems
Q&A
Q: Does Cacheonix allow to access cached
  data so that some clients see updates in
  progress and some don’t
A: Cacheonix supports this scenario by
  providing distributed reliable read/write locks.
  If the code wants to be shielded from the
  transactions in progress it should access the
  cache inside a lock. Otherwise just read/write
  the data as usual.



                                        Copyright © 2011 Cacheonix Systems
Q&A
Q: So, Cacheonix provides strict data
  consistency when it comes to updates.
  How does it work?
A: Cacheonix builds its data access capability on
  its very sophisticated cluster management
  protocol that allows it to guarantee consistent
  data access even when servers fail, leave or
  join the cluster while keeping latency low.
  Cacheonix supports disabling strict
  consistency for situations when speed is more
  important.
                                       Copyright © 2011 Cacheonix Systems
Q&A
Q: Does Cacheonix provide data grid
  functionality?
A: Cacheonix fully supports operating as a data
  grid where a cache is the only source of
  application data. Cacheonix does so by
  providing DataSource and DataStore APIs
  that it uses as a backed data source for its
  read-through and write-through caches.




                                      Copyright © 2011 Cacheonix Systems
Q&A
Q: How does Cacheonix compare to other
  commercial data grid products?
A: Unlike other products Cacheonix allows to
  utilize multi-core machines fully by running
  each cache in a separate thread. Cacheonix
  offers least time for recovery from server
  failures by making all servers equal, by not
  having a single point of failure. Also,
  Cacheonix offers many unique features that
  are great for developing low-latency systems
  such as coherent local front caches and read-
  ahead caches.
                                      Copyright © 2011 Cacheonix Systems
Q&A
Q: Should I have a single cache or many
  caches?
A: A best practice is to have multiple caches
  that names reflect types values stored in
  them. Usually those are either per-object
  such as my.app.Invoice or per-query such as
  my.app.InoiceQueryResult. Hiberhate requres
  cache names match names of persistent
  objects. This practice provides best
  concurrency Cacheonix as it runs each cache
  in a separate thread.

                                    Copyright © 2011 Cacheonix Systems
Q&A
Q: Aren’t automatic serialization frameworks
   more convenient that implementing
   Externalizable, especially when it comes to
   versioning?
A: First, Externalizable is the closest to wire speed when
   it comes to serialization. Second, even if a
   serialization framework can enforce a cached object
   being a pure value object, there will be hard-to figure
   out production failures associated with different
   versions of the system expecting data and not finding
   it. On the contrary, implementing Externalizable and
   following best practices for production change
   management produces faster and more stable
   system.
                                              Copyright © 2011 Cacheonix Systems
Q&A
Q: I am deploying my application in a
  cloud. How do I know if my cloud
  provider follows best practices?
A: If you are a paying customer, the best way
  to find out is to ask them directly. E-mail, call
  them, or file a request through their web
  support.




                                         Copyright © 2011 Cacheonix Systems
Need help with scaling your application and
 improving its performance with distributed
                  caching?
     Visit us at www.cacheonix.com




                                   Copyright © 2011 Cacheonix Systems
Thank you!




             Copyright © 2011 Cacheonix Systems

More Related Content

What's hot

8 christian ferber xen_server_6_news
8 christian ferber xen_server_6_news8 christian ferber xen_server_6_news
8 christian ferber xen_server_6_newsDigicomp Academy AG
 
VMworld Europe 2014: Top 10 Do’s / Don’ts of Data Protection For VMware vSphere
VMworld Europe 2014: Top 10 Do’s / Don’ts of Data Protection For VMware vSphereVMworld Europe 2014: Top 10 Do’s / Don’ts of Data Protection For VMware vSphere
VMworld Europe 2014: Top 10 Do’s / Don’ts of Data Protection For VMware vSphereVMworld
 
VMworld Europe 2014: A Blueprint for Disaster Recovery of Business Critical A...
VMworld Europe 2014: A Blueprint for Disaster Recovery of Business Critical A...VMworld Europe 2014: A Blueprint for Disaster Recovery of Business Critical A...
VMworld Europe 2014: A Blueprint for Disaster Recovery of Business Critical A...VMworld
 
AMER Webcast: VMware Virtual SAN
AMER Webcast: VMware Virtual SANAMER Webcast: VMware Virtual SAN
AMER Webcast: VMware Virtual SANVMware
 
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The SequelVMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The SequelVMworld
 
Xen server 6.1 technical sales presentation
Xen server 6.1 technical sales presentationXen server 6.1 technical sales presentation
Xen server 6.1 technical sales presentationsolarisyougood
 
VMware: Enabling Software-Defined Storage Using Virtual SAN (Technical Decisi...
VMware: Enabling Software-Defined Storage Using Virtual SAN (Technical Decisi...VMware: Enabling Software-Defined Storage Using Virtual SAN (Technical Decisi...
VMware: Enabling Software-Defined Storage Using Virtual SAN (Technical Decisi...VMware
 
VMworld Europe 204: Technical Deep Dive on EVO: RAIL, the new VMware Hyper-Co...
VMworld Europe 204: Technical Deep Dive on EVO: RAIL, the new VMware Hyper-Co...VMworld Europe 204: Technical Deep Dive on EVO: RAIL, the new VMware Hyper-Co...
VMworld Europe 204: Technical Deep Dive on EVO: RAIL, the new VMware Hyper-Co...VMworld
 
VMworld 2013: Virtualizing Highly Available SQL Servers
VMworld 2013: Virtualizing Highly Available SQL Servers VMworld 2013: Virtualizing Highly Available SQL Servers
VMworld 2013: Virtualizing Highly Available SQL Servers VMworld
 
VMworld Europe 2014: What’s New in End User Computing: Full Desktop Automatio...
VMworld Europe 2014: What’s New in End User Computing: Full Desktop Automatio...VMworld Europe 2014: What’s New in End User Computing: Full Desktop Automatio...
VMworld Europe 2014: What’s New in End User Computing: Full Desktop Automatio...VMworld
 
Five common customer use cases for Virtual SAN - VMworld US / 2015
Five common customer use cases for Virtual SAN - VMworld US / 2015Five common customer use cases for Virtual SAN - VMworld US / 2015
Five common customer use cases for Virtual SAN - VMworld US / 2015Duncan Epping
 
End of RAID as we know it with Ceph Replication
End of RAID as we know it with Ceph ReplicationEnd of RAID as we know it with Ceph Replication
End of RAID as we know it with Ceph ReplicationCeph Community
 
Oracle Database Appliance
Oracle Database ApplianceOracle Database Appliance
Oracle Database Appliancevkv_vkv
 
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...VMworld
 
VMWARE Professionals - Storage and Resources
VMWARE Professionals -  Storage and ResourcesVMWARE Professionals -  Storage and Resources
VMWARE Professionals - Storage and ResourcesPaulo Freitas
 
EVO-RAIL 2.0 Overview Deck
EVO-RAIL 2.0 Overview DeckEVO-RAIL 2.0 Overview Deck
EVO-RAIL 2.0 Overview DeckErik Bussink
 
VMworld 2014: Virtual SAN Architecture Deep Dive
VMworld 2014: Virtual SAN Architecture Deep DiveVMworld 2014: Virtual SAN Architecture Deep Dive
VMworld 2014: Virtual SAN Architecture Deep DiveVMworld
 
VMworld Europe 2014: Customer Panel - Going Beyond Server Virtualization
VMworld Europe 2014: Customer Panel - Going Beyond Server VirtualizationVMworld Europe 2014: Customer Panel - Going Beyond Server Virtualization
VMworld Europe 2014: Customer Panel - Going Beyond Server VirtualizationVMworld
 
Presentation v mware virtual san 6.0
Presentation   v mware virtual san 6.0Presentation   v mware virtual san 6.0
Presentation v mware virtual san 6.0solarisyougood
 

What's hot (20)

8 christian ferber xen_server_6_news
8 christian ferber xen_server_6_news8 christian ferber xen_server_6_news
8 christian ferber xen_server_6_news
 
VMworld Europe 2014: Top 10 Do’s / Don’ts of Data Protection For VMware vSphere
VMworld Europe 2014: Top 10 Do’s / Don’ts of Data Protection For VMware vSphereVMworld Europe 2014: Top 10 Do’s / Don’ts of Data Protection For VMware vSphere
VMworld Europe 2014: Top 10 Do’s / Don’ts of Data Protection For VMware vSphere
 
VMworld Europe 2014: A Blueprint for Disaster Recovery of Business Critical A...
VMworld Europe 2014: A Blueprint for Disaster Recovery of Business Critical A...VMworld Europe 2014: A Blueprint for Disaster Recovery of Business Critical A...
VMworld Europe 2014: A Blueprint for Disaster Recovery of Business Critical A...
 
AMER Webcast: VMware Virtual SAN
AMER Webcast: VMware Virtual SANAMER Webcast: VMware Virtual SAN
AMER Webcast: VMware Virtual SAN
 
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The SequelVMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
VMworld Europe 2014: Virtualizing Databases Doing IT Right – The Sequel
 
Xen server 6.1 technical sales presentation
Xen server 6.1 technical sales presentationXen server 6.1 technical sales presentation
Xen server 6.1 technical sales presentation
 
VMware: Enabling Software-Defined Storage Using Virtual SAN (Technical Decisi...
VMware: Enabling Software-Defined Storage Using Virtual SAN (Technical Decisi...VMware: Enabling Software-Defined Storage Using Virtual SAN (Technical Decisi...
VMware: Enabling Software-Defined Storage Using Virtual SAN (Technical Decisi...
 
MCSA 70-412 Chapter 11
MCSA 70-412 Chapter 11MCSA 70-412 Chapter 11
MCSA 70-412 Chapter 11
 
VMworld Europe 204: Technical Deep Dive on EVO: RAIL, the new VMware Hyper-Co...
VMworld Europe 204: Technical Deep Dive on EVO: RAIL, the new VMware Hyper-Co...VMworld Europe 204: Technical Deep Dive on EVO: RAIL, the new VMware Hyper-Co...
VMworld Europe 204: Technical Deep Dive on EVO: RAIL, the new VMware Hyper-Co...
 
VMworld 2013: Virtualizing Highly Available SQL Servers
VMworld 2013: Virtualizing Highly Available SQL Servers VMworld 2013: Virtualizing Highly Available SQL Servers
VMworld 2013: Virtualizing Highly Available SQL Servers
 
VMworld Europe 2014: What’s New in End User Computing: Full Desktop Automatio...
VMworld Europe 2014: What’s New in End User Computing: Full Desktop Automatio...VMworld Europe 2014: What’s New in End User Computing: Full Desktop Automatio...
VMworld Europe 2014: What’s New in End User Computing: Full Desktop Automatio...
 
Five common customer use cases for Virtual SAN - VMworld US / 2015
Five common customer use cases for Virtual SAN - VMworld US / 2015Five common customer use cases for Virtual SAN - VMworld US / 2015
Five common customer use cases for Virtual SAN - VMworld US / 2015
 
End of RAID as we know it with Ceph Replication
End of RAID as we know it with Ceph ReplicationEnd of RAID as we know it with Ceph Replication
End of RAID as we know it with Ceph Replication
 
Oracle Database Appliance
Oracle Database ApplianceOracle Database Appliance
Oracle Database Appliance
 
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
 
VMWARE Professionals - Storage and Resources
VMWARE Professionals -  Storage and ResourcesVMWARE Professionals -  Storage and Resources
VMWARE Professionals - Storage and Resources
 
EVO-RAIL 2.0 Overview Deck
EVO-RAIL 2.0 Overview DeckEVO-RAIL 2.0 Overview Deck
EVO-RAIL 2.0 Overview Deck
 
VMworld 2014: Virtual SAN Architecture Deep Dive
VMworld 2014: Virtual SAN Architecture Deep DiveVMworld 2014: Virtual SAN Architecture Deep Dive
VMworld 2014: Virtual SAN Architecture Deep Dive
 
VMworld Europe 2014: Customer Panel - Going Beyond Server Virtualization
VMworld Europe 2014: Customer Panel - Going Beyond Server VirtualizationVMworld Europe 2014: Customer Panel - Going Beyond Server Virtualization
VMworld Europe 2014: Customer Panel - Going Beyond Server Virtualization
 
Presentation v mware virtual san 6.0
Presentation   v mware virtual san 6.0Presentation   v mware virtual san 6.0
Presentation v mware virtual san 6.0
 

Viewers also liked

¡Basta de escuchar a los usuarios!
¡Basta de escuchar a los usuarios! ¡Basta de escuchar a los usuarios!
¡Basta de escuchar a los usuarios! Pedro Arellano
 
090613 Ideo
090613 Ideo090613 Ideo
090613 Ideoyuu_2003
 
Ashcroft convent presentation to council committee
Ashcroft convent   presentation to council committeeAshcroft convent   presentation to council committee
Ashcroft convent presentation to council committeeDennis Van Staalduinen
 
Niver Paula - 28.11.07
Niver Paula - 28.11.07Niver Paula - 28.11.07
Niver Paula - 28.11.07Jubrac Jacui
 
The shifting art of animal breeding
The shifting art of animal breedingThe shifting art of animal breeding
The shifting art of animal breedingSijne Van der Beek
 
Presentation1
Presentation1Presentation1
Presentation1xiammaix
 
My Mom On Leadership
My Mom On LeadershipMy Mom On Leadership
My Mom On LeadershipMaja Vujovic
 
Workshop logeion 1004 webversie
Workshop logeion 1004 webversieWorkshop logeion 1004 webversie
Workshop logeion 1004 webversieSjef Kerkhofs
 
Niver tonight - 19.05.07
Niver tonight - 19.05.07Niver tonight - 19.05.07
Niver tonight - 19.05.07Jubrac Jacui
 
Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, javaMatteo Baccan
 
Collaboration for successful e-learning in Worcestershire
Collaboration for successful e-learning in WorcestershireCollaboration for successful e-learning in Worcestershire
Collaboration for successful e-learning in WorcestershirePaul McElvaney
 
Learning Pool: What you ought to know about www.learningpool.com
Learning Pool: What you ought to know about www.learningpool.com Learning Pool: What you ought to know about www.learningpool.com
Learning Pool: What you ought to know about www.learningpool.com Paul McElvaney
 
Innovation in Learning at LB Lambeth
Innovation in Learning at LB LambethInnovation in Learning at LB Lambeth
Innovation in Learning at LB LambethPaul McElvaney
 
Learning Pool Social Care Seminar
Learning Pool Social Care SeminarLearning Pool Social Care Seminar
Learning Pool Social Care SeminarPaul McElvaney
 
Webanalytics2.0 sem jvol2
Webanalytics2.0 sem jvol2Webanalytics2.0 sem jvol2
Webanalytics2.0 sem jvol2Sonika Mishra
 

Viewers also liked (20)

¡Basta de escuchar a los usuarios!
¡Basta de escuchar a los usuarios! ¡Basta de escuchar a los usuarios!
¡Basta de escuchar a los usuarios!
 
090613 Ideo
090613 Ideo090613 Ideo
090613 Ideo
 
Ashcroft convent presentation to council committee
Ashcroft convent   presentation to council committeeAshcroft convent   presentation to council committee
Ashcroft convent presentation to council committee
 
Niver Paula - 28.11.07
Niver Paula - 28.11.07Niver Paula - 28.11.07
Niver Paula - 28.11.07
 
The shifting art of animal breeding
The shifting art of animal breedingThe shifting art of animal breeding
The shifting art of animal breeding
 
Scmad Chapter03
Scmad Chapter03Scmad Chapter03
Scmad Chapter03
 
Presentation1
Presentation1Presentation1
Presentation1
 
Scmad Chapter 01
Scmad Chapter 01Scmad Chapter 01
Scmad Chapter 01
 
My Mom On Leadership
My Mom On LeadershipMy Mom On Leadership
My Mom On Leadership
 
Workshop logeion 1004 webversie
Workshop logeion 1004 webversieWorkshop logeion 1004 webversie
Workshop logeion 1004 webversie
 
Niver tonight - 19.05.07
Niver tonight - 19.05.07Niver tonight - 19.05.07
Niver tonight - 19.05.07
 
Sahabat
SahabatSahabat
Sahabat
 
Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, java
 
Collaboration for successful e-learning in Worcestershire
Collaboration for successful e-learning in WorcestershireCollaboration for successful e-learning in Worcestershire
Collaboration for successful e-learning in Worcestershire
 
Learning Pool: What you ought to know about www.learningpool.com
Learning Pool: What you ought to know about www.learningpool.com Learning Pool: What you ought to know about www.learningpool.com
Learning Pool: What you ought to know about www.learningpool.com
 
Innovation in Learning at LB Lambeth
Innovation in Learning at LB LambethInnovation in Learning at LB Lambeth
Innovation in Learning at LB Lambeth
 
Learning Pool Social Care Seminar
Learning Pool Social Care SeminarLearning Pool Social Care Seminar
Learning Pool Social Care Seminar
 
Tibo Lezing 27 mei
Tibo Lezing 27 meiTibo Lezing 27 mei
Tibo Lezing 27 mei
 
Webanalytics2.0 sem jvol2
Webanalytics2.0 sem jvol2Webanalytics2.0 sem jvol2
Webanalytics2.0 sem jvol2
 
 

Similar to Best practices for_scaling_java_applications_with_distributed_caching

Virtualization intro to freshers
Virtualization intro to freshersVirtualization intro to freshers
Virtualization intro to freshersShravani Mondrety
 
What is coming for VMware vSphere?
What is coming for VMware vSphere?What is coming for VMware vSphere?
What is coming for VMware vSphere?Duncan Epping
 
4. (mjk) extreme performance 2
4. (mjk) extreme performance 24. (mjk) extreme performance 2
4. (mjk) extreme performance 2Doina Draganescu
 
Webinar - Introduction to Ceph and OpenStack
Webinar - Introduction to Ceph and OpenStackWebinar - Introduction to Ceph and OpenStack
Webinar - Introduction to Ceph and OpenStackCeph Community
 
OSOM - Open source catching solutions
OSOM - Open source catching solutionsOSOM - Open source catching solutions
OSOM - Open source catching solutionsMarcela Oniga
 
SQL 2012 AlwaysOn Availability Groups for SharePoint 2013 - SharePoint Connec...
SQL 2012 AlwaysOn Availability Groups for SharePoint 2013 - SharePoint Connec...SQL 2012 AlwaysOn Availability Groups for SharePoint 2013 - SharePoint Connec...
SQL 2012 AlwaysOn Availability Groups for SharePoint 2013 - SharePoint Connec...Michael Noel
 
CEPH technical analysis 2014
CEPH technical analysis 2014CEPH technical analysis 2014
CEPH technical analysis 2014Erwan Quigna
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterpriseBert Poller
 
Openstorage with OpenStack, by Bradley
Openstorage with OpenStack, by BradleyOpenstorage with OpenStack, by Bradley
Openstorage with OpenStack, by BradleyHui Cheng
 
Pm 01 bradley stone_openstorage_openstack
Pm 01 bradley stone_openstorage_openstackPm 01 bradley stone_openstorage_openstack
Pm 01 bradley stone_openstorage_openstackOpenCity Community
 
Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcacheHyeonSeok Choi
 
MIVA Small Business Conference 2006
MIVA Small Business Conference 2006MIVA Small Business Conference 2006
MIVA Small Business Conference 2006webhostingguy
 
SoftLayer Storage Services Overview
SoftLayer Storage Services OverviewSoftLayer Storage Services Overview
SoftLayer Storage Services OverviewMichael Fork
 
Primary Storage in CloudStack by Mike Tutkowski
Primary Storage in CloudStack by Mike TutkowskiPrimary Storage in CloudStack by Mike Tutkowski
Primary Storage in CloudStack by Mike Tutkowskibuildacloud
 
triAGENS simplevoc vs_memcached
triAGENS simplevoc vs_memcachedtriAGENS simplevoc vs_memcached
triAGENS simplevoc vs_memcachedtriAGENS
 
SimpleVoc vs Memcached
SimpleVoc vs MemcachedSimpleVoc vs Memcached
SimpleVoc vs Memcachedtriagens
 

Similar to Best practices for_scaling_java_applications_with_distributed_caching (20)

Factored operating systems
Factored operating systemsFactored operating systems
Factored operating systems
 
Virtualization intro to freshers
Virtualization intro to freshersVirtualization intro to freshers
Virtualization intro to freshers
 
What is coming for VMware vSphere?
What is coming for VMware vSphere?What is coming for VMware vSphere?
What is coming for VMware vSphere?
 
4. (mjk) extreme performance 2
4. (mjk) extreme performance 24. (mjk) extreme performance 2
4. (mjk) extreme performance 2
 
Webinar - Introduction to Ceph and OpenStack
Webinar - Introduction to Ceph and OpenStackWebinar - Introduction to Ceph and OpenStack
Webinar - Introduction to Ceph and OpenStack
 
Jelastic Features 2.x
Jelastic Features 2.xJelastic Features 2.x
Jelastic Features 2.x
 
OSOM - Open source catching solutions
OSOM - Open source catching solutionsOSOM - Open source catching solutions
OSOM - Open source catching solutions
 
SQL 2012 AlwaysOn Availability Groups for SharePoint 2013 - SharePoint Connec...
SQL 2012 AlwaysOn Availability Groups for SharePoint 2013 - SharePoint Connec...SQL 2012 AlwaysOn Availability Groups for SharePoint 2013 - SharePoint Connec...
SQL 2012 AlwaysOn Availability Groups for SharePoint 2013 - SharePoint Connec...
 
CEPH technical analysis 2014
CEPH technical analysis 2014CEPH technical analysis 2014
CEPH technical analysis 2014
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
Docker for the enterprise
Docker for the enterpriseDocker for the enterprise
Docker for the enterprise
 
Openstorage with OpenStack, by Bradley
Openstorage with OpenStack, by BradleyOpenstorage with OpenStack, by Bradley
Openstorage with OpenStack, by Bradley
 
Pm 01 bradley stone_openstorage_openstack
Pm 01 bradley stone_openstorage_openstackPm 01 bradley stone_openstorage_openstack
Pm 01 bradley stone_openstorage_openstack
 
Oow Ppt 2
Oow Ppt 2Oow Ppt 2
Oow Ppt 2
 
Overview of the ehcache
Overview of the ehcacheOverview of the ehcache
Overview of the ehcache
 
MIVA Small Business Conference 2006
MIVA Small Business Conference 2006MIVA Small Business Conference 2006
MIVA Small Business Conference 2006
 
SoftLayer Storage Services Overview
SoftLayer Storage Services OverviewSoftLayer Storage Services Overview
SoftLayer Storage Services Overview
 
Primary Storage in CloudStack by Mike Tutkowski
Primary Storage in CloudStack by Mike TutkowskiPrimary Storage in CloudStack by Mike Tutkowski
Primary Storage in CloudStack by Mike Tutkowski
 
triAGENS simplevoc vs_memcached
triAGENS simplevoc vs_memcachedtriAGENS simplevoc vs_memcached
triAGENS simplevoc vs_memcached
 
SimpleVoc vs Memcached
SimpleVoc vs MemcachedSimpleVoc vs Memcached
SimpleVoc vs Memcached
 

More from yamingd

Ued案例
Ued案例Ued案例
Ued案例yamingd
 
Communication
CommunicationCommunication
Communicationyamingd
 
10 examples of hot spot jvm options in java
10 examples of hot spot jvm options in java10 examples of hot spot jvm options in java
10 examples of hot spot jvm options in javayamingd
 
产品思考
产品思考产品思考
产品思考yamingd
 
设计资料总结
设计资料总结设计资料总结
设计资料总结yamingd
 
技术培训
技术培训技术培训
技术培训yamingd
 

More from yamingd (6)

Ued案例
Ued案例Ued案例
Ued案例
 
Communication
CommunicationCommunication
Communication
 
10 examples of hot spot jvm options in java
10 examples of hot spot jvm options in java10 examples of hot spot jvm options in java
10 examples of hot spot jvm options in java
 
产品思考
产品思考产品思考
产品思考
 
设计资料总结
设计资料总结设计资料总结
设计资料总结
 
技术培训
技术培训技术培训
技术培训
 

Recently uploaded

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 

Recently uploaded (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
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
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 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
 

Best practices for_scaling_java_applications_with_distributed_caching

  • 1. Best Practices for Scaling Java Applications with Distributed Caching Copyright © 2011 Cacheonix Systems
  • 2. Introduction Presenter: Slava Imeshev •  Founder at Cacheonix Systems developing reliable clustered cache Cacheonix •  Core expertise in reliable distributed systems •  simeshev@cacheonix.com Copyright © 2011 Cacheonix Systems
  • 3. Copyright © 2011 Cacheonix Systems
  • 4. Definitions Copyright © 2011 Cacheonix Systems
  • 5. Performance Number of operations per unit of time •  Requests per second •  Pages per second •  Transactions per second Performance is not scalability (is 200 pages/s more scalable than 150 pages/s?) Copyright © 2011 Cacheonix Systems
  • 6. Scalability Ability to handle additional load by adding more computational resources •  Vertical scalability •  Horizontal scalability Copyright © 2011 Cacheonix Systems
  • 7. Vertical Scalability •  Vertical scalability is handling additional load by adding more power to a single machine •  Vertical scalability is trivial to achieve. Just switch to a faster CPU, add more RAM or replace an HDD with an SSD •  Vertical scalability has a hard limit (2-5 times improvement in capacity) Copyright © 2011 Cacheonix Systems
  • 8. Horizontal Scalability •  Horizontal scalability is handling additional load by adding more servers •  Horizontal scalability offers much greater benefit (2-1000 times improvement in capacity) •  Horizontal scalability is much harder to achieve as adding servers requires ensuring data consistency and coherent view of cache updates. Copyright © 2011 Cacheonix Systems
  • 9. Scalability Problem Copyright © 2011 Cacheonix Systems
  • 10. Normal Situation Copyright © 2011 Cacheonix Systems
  • 11. System Cannot Scale •  Added 2 more app servers •  Expected x3 increase in capacity •  Got only x2 •  System hit scalability limit •  Database capacity is a bottleneck Copyright © 2011 Cacheonix Systems
  • 12. Cache An area of local memory that holds a copy of frequently accessed data that is otherwise expensive to get or compute Copyright © 2011 Cacheonix Systems
  • 13. Key Cache Parameters •  Cache size defines how many elements a cache can hold Copyright © 2011 Cacheonix Systems
  • 14. Key Cache Parameters •  Cache size defines how many elements a cache can hold •  Cache eviction algorithm defines what to do when the number of elements in cache exceeds the size Copyright © 2011 Cacheonix Systems
  • 15. Key Cache Parameters •  Cache size defines how many elements a cache can hold •  Cache eviction algorithm defines what to do when the number of elements in cache exceeds the size •  Time-to-live defines time after that a cache key should be remove from the cache (expired) Copyright © 2011 Cacheonix Systems
  • 16. Cache Eviction Algorithm Least Recently Used (LRU) works best •  Catches temporal and spatial locality Copyright © 2011 Cacheonix Systems
  • 17. Cache Eviction Algorithm Least Recently Used (LRU) works best •  Catches temporal and spatial locality Most of other cache algorithms (MRU, LFU, etc) •  Not applicable to most of practical situations •  Subject of cache poisoning •  Expensive from performance point of view Copyright © 2011 Cacheonix Systems
  • 18. Cache Types •  Application cache •  Second level (L2) cache •  Hybrid cache Copyright © 2011 Cacheonix Systems
  • 19. Application Cache Copyright © 2011 Cacheonix Systems
  • 20. Level-2 Cache Copyright © 2011 Cacheonix Systems
  • 21. Hybrid Cache Copyright © 2011 Cacheonix Systems
  • 22. Cache Architectures •  Local •  Distributed Copyright © 2011 Cacheonix Systems
  • 23. Local Cache •  All elements are stored in local memory •  Size is limited by a single JVM’s heap Copyright © 2011 Cacheonix Systems
  • 24. Distributed Cache •  Cache elements are distributed across a set servers (a cluster) •  Cache size is a sum of cache partitions in case of a partitioned cache •  Cache size can be much bigger than a single Java VM •  Distributed cache can scale horizontally by adding more servers Copyright © 2011 Cacheonix Systems
  • 25. Distributed Cache Example (Cacheonix) Copyright © 2011 Cacheonix Systems
  • 26. Distributed Cache Important characteristics: •  Partitioning for load balancing Copyright © 2011 Cacheonix Systems
  • 27. Distributed Cache Important characteristics: •  Partitioning for load balancing •  Replication for high availability Copyright © 2011 Cacheonix Systems
  • 28. Distributed Cache Important characteristics: •  Partitioning for load balancing •  Replication for high availability •  Cache coherence for data consistency Copyright © 2011 Cacheonix Systems
  • 29. Distributed Cache Important capabilities: •  Partitioning for load balancing •  Replication for high availability •  Cache coherence for data consistency •  Fault tolerance for high availability Not all systems have these capabilities Copyright © 2011 Cacheonix Systems
  • 30. Availability and Fault Tolerance Ability to continue to operate despite of failure of members of the cluster •  When applied to distributed caching, HA means an ability to provide uninterrupted, consistent data access Copyright © 2011 Cacheonix Systems
  • 31. Copyright © 2011 Cacheonix Systems
  • 32. Solution to Scalability Problem Copyright © 2011 Cacheonix Systems
  • 33. Add Distributed Cache •  Bottleneck is removed •  System is reading mostly from the cache •  Distributed cache provides large cache and load balancing Copyright © 2011 Cacheonix Systems
  • 34. In-Process Distributed Cache An in-process distributed cache provides memory-like speed and coherent and consistent data access Copyright © 2011 Cacheonix Systems
  • 35. Copyright © 2011 Cacheonix Systems
  • 36. Copyright © 2011 Cacheonix Systems
  • 37. Best Practices Copyright © 2011 Cacheonix Systems
  • 38. Best Practice: Scale Out by Adding More Servers More cache nodes means: •  Smaller partition size •  Lesser node traffic •  Reduced load •  Smaller GC delays •  Higher availability Copyright © 2011 Cacheonix Systems
  • 39. Best Practice: Scale Out by Adding More Servers More cache nodes means: •  Bigger distributed cache •  Better performance Copyright © 2011 Cacheonix Systems
  • 40. Best Practice: Design for Scalability Upfront •  Design for scalability won’t emerge on its own •  Design for loads the worst case x10 •  Accommodate going distributed •  Good designs are easy to optimize Copyright © 2011 Cacheonix Systems
  • 41. Best Practice: Optimize before Caching Optimize late: •  Avoid premature optimization •  Profile using a decent profiler. We prefer JProfiler •  Grow a local profiling expert •  Use synthetic point load tests •  Run realistic end-to-end load tests Copyright © 2011 Cacheonix Systems
  • 42. Best Practice: Automate Problem Detection Automate detection of performance problems: •  PMD •  FindBugs •  KlocWork Copyright © 2011 Cacheonix Systems
  • 43. Best Practice: Stay Local before Going Distributed •  Scale vertically first (better CPU, more RAM) Copyright © 2011 Cacheonix Systems
  • 44. Best Practice: Stay Local before Going Distributed •  Scale vertically first (better CPU, more RAM) •  Go distributed only when opportunities for vertical scalability are completely exhausted Copyright © 2011 Cacheonix Systems
  • 45. Best Practice: Stay Local before Going Distributed •  Scale vertically first (better CPU, more RAM) •  Go distributed only when opportunities for vertical scalability are completely exhausted •  A distributed cache is slower than a local one because it must use network I/O and more CPU to maintain coherence, partitioning and replication Copyright © 2011 Cacheonix Systems
  • 46. Best Practice: Stay Local before Going Distributed •  Scale vertically first (better CPU, more RAM) •  Go distributed only when opportunities for vertical scalability are completely exhausted •  A distributed cache is slower than a local one because it must use network I/O and more CPU to maintain coherence, partitioning and replication •  Distributed systems require additional configuration, testing and network infrastructure. Copyright © 2011 Cacheonix Systems
  • 47. Best Practice: Stay Local before Going Distributed •  Scale vertically first (better CPU, more RAM) •  Go distributed only when opportunities for vertical scalability are completely exhausted •  A distributed cache is slower than a local one because it must use network I/O and more CPU to maintain coherence, partitioning and replication •  Distributed systems require additional configuration, testing and network infrastructure. •  There are some licensing costs associated with distributed caching solutions that work Copyright © 2011 Cacheonix Systems
  • 48. Best Practice: Cache Right Objects Cache objects that are expensive to get •  Results of database queries •  I/O •  XML •  XSL Copyright © 2011 Cacheonix Systems
  • 49. Best Practice: Cache Right Objects Cache objects that are expensive to get •  Results of database queries •  I/O •  XML •  XSL Cache objects that are read-mostly •  Guarantees high hit/miss ratio and •  Low cache maintenance and •  Low cache coherence and replication costs Copyright © 2011 Cacheonix Systems
  • 50. Antipattern: “Cache Them All” Don’t cache objects that are easy to get: •  Caching makes them harder to get •  Caching complicates design and implementation Copyright © 2011 Cacheonix Systems
  • 51. Antipattern: “Cache Them All” Don’t cache objects that are easy to get: •  Caching makes them harder to get •  Caching complicates design and implementation Don’t cache write-mostly objects: •  Little to no benefit •  Cache maintenance becomes an expense Copyright © 2011 Cacheonix Systems
  • 52. Copyright © 2011 Cacheonix Systems
  • 53. Copyright © 2011 Cacheonix Systems
  • 54. Best Practice: Implement java.io.Externalizable Default Java serialization is too slow •  Does a lot of useless things, automatically •  Was developed with networked object transfers in mind •  Is done by simply implementing signature interface java.io.Serializable Copyright © 2011 Cacheonix Systems
  • 55. Best Practice: Implement java.io.Externalizable java.io.Externalizable •  Can be significantly faster (2-8 times than default serialization) •  2-4 times smaller byte footprint – higher network throughput •  Requires additional code Copyright © 2011 Cacheonix Systems
  • 56. Externalizable Example Copyright © 2011 Cacheonix Systems
  • 57. Externalizable Example Copyright © 2011 Cacheonix Systems
  • 58. Externalizable Example Copyright © 2011 Cacheonix Systems
  • 59. Best Practice: Test for Serializability •  You must ensure that the object that was received at another end is the object that was sent •  Cache keys AND cached values routinely travel across the network •  It is critical to write proper serialization tests for keys and values Copyright © 2011 Cacheonix Systems
  • 60. Best Practice: Test for Serializability •  Test pattern: Serialize, deserialize, compare Copyright © 2011 Cacheonix Systems
  • 61. Best Practice: Test for Serializability Copyright © 2011 Cacheonix Systems
  • 62. Best Practice: Test for Serializability Copyright © 2011 Cacheonix Systems
  • 63. Best Practice: Test for Serializability Copyright © 2011 Cacheonix Systems
  • 64. Best Practice: Split Large RAM Between Multiple JVMs Big fat boxes have become common: •  8 CPU cores 32Gb RAM •  All modern 64 bit JVMs support large heaps Copyright © 2011 Cacheonix Systems
  • 65. Best Practice: Split Large RAM Between Multiple JVMs Big fat boxes have become common: •  8 CPU cores 32Gb RAM •  All modern 64 bit JVMs support large heaps Problem: •  Large heaps mean long major GCs (10s of seconds) •  Cluster nodes seem to appear gone causing cluster configuration jitter Copyright © 2011 Cacheonix Systems
  • 66. Best Practice: Split Large RAM Between Multiple JVMs Solution: Split large RAM into multiple 1-2Gb JVMs •  Distributed caching allows to split data processing into many JVMs. •  Shorter major GCs mean lesser latency and more stable cluster •  Nice side effects such as higher availability, better load balancing and improved concurrency Copyright © 2011 Cacheonix Systems
  • 67. Best Practice: Split Large RAM Between Multiple JVMs Copyright © 2011 Cacheonix Systems
  • 68. Problem: Distributed Caching Adds Network Traffic •  Remote partition access •  Cache coherency traffic •  Replication traffic Copyright © 2011 Cacheonix Systems
  • 69. Problem: Distributed Caching Adds Network Traffic •  Remote partition access •  Cache coherency traffic •  Replication traffic Cache being on the same network with the application leads to: •  Increased cache access latency •  Increased application response time Copyright © 2011 Cacheonix Systems
  • 70. Best Practice: Provide Dedicated Network Infrastructure Solution: Dedicate separate network to distributed cache traffic: 1.  Add a network card. Most of the modern rackmount servers already have two NICs 2.  Add a separate switch to serve the distributed cache traffic Copyright © 2011 Cacheonix Systems
  • 71. Copyright © 2011 Cacheonix Systems
  • 72. Best Practice: Use Multicast •  Most of modern caching solutions efficiently utilize multicast. •  If done right, multicast provides significant reduction in network traffic (~100 of times) Copyright © 2011 Cacheonix Systems
  • 73. “Best Practice is a technique or methodology that, through experience and research, has proven to reliably lead to a desired result.” Copyright © 2011 Cacheonix Systems
  • 74. Copyright © 2011 Cacheonix Systems
  • 75. Q&A Q: How does replication work in Cacheonix? Is it master/slave? A: Cacheonix replication protocol is more advanced then master/slave. In Cacheonix every cache node carries a partition that it owns, and a set of partition replicas. This allows Cacheonix restore operational partition from a replica automatically and instantaneously. Copyright © 2011 Cacheonix Systems
  • 76. Q&A Q: Does Cacheonix allow to access cached data so that some clients see updates in progress and some don’t A: Cacheonix supports this scenario by providing distributed reliable read/write locks. If the code wants to be shielded from the transactions in progress it should access the cache inside a lock. Otherwise just read/write the data as usual. Copyright © 2011 Cacheonix Systems
  • 77. Q&A Q: So, Cacheonix provides strict data consistency when it comes to updates. How does it work? A: Cacheonix builds its data access capability on its very sophisticated cluster management protocol that allows it to guarantee consistent data access even when servers fail, leave or join the cluster while keeping latency low. Cacheonix supports disabling strict consistency for situations when speed is more important. Copyright © 2011 Cacheonix Systems
  • 78. Q&A Q: Does Cacheonix provide data grid functionality? A: Cacheonix fully supports operating as a data grid where a cache is the only source of application data. Cacheonix does so by providing DataSource and DataStore APIs that it uses as a backed data source for its read-through and write-through caches. Copyright © 2011 Cacheonix Systems
  • 79. Q&A Q: How does Cacheonix compare to other commercial data grid products? A: Unlike other products Cacheonix allows to utilize multi-core machines fully by running each cache in a separate thread. Cacheonix offers least time for recovery from server failures by making all servers equal, by not having a single point of failure. Also, Cacheonix offers many unique features that are great for developing low-latency systems such as coherent local front caches and read- ahead caches. Copyright © 2011 Cacheonix Systems
  • 80. Q&A Q: Should I have a single cache or many caches? A: A best practice is to have multiple caches that names reflect types values stored in them. Usually those are either per-object such as my.app.Invoice or per-query such as my.app.InoiceQueryResult. Hiberhate requres cache names match names of persistent objects. This practice provides best concurrency Cacheonix as it runs each cache in a separate thread. Copyright © 2011 Cacheonix Systems
  • 81. Q&A Q: Aren’t automatic serialization frameworks more convenient that implementing Externalizable, especially when it comes to versioning? A: First, Externalizable is the closest to wire speed when it comes to serialization. Second, even if a serialization framework can enforce a cached object being a pure value object, there will be hard-to figure out production failures associated with different versions of the system expecting data and not finding it. On the contrary, implementing Externalizable and following best practices for production change management produces faster and more stable system. Copyright © 2011 Cacheonix Systems
  • 82. Q&A Q: I am deploying my application in a cloud. How do I know if my cloud provider follows best practices? A: If you are a paying customer, the best way to find out is to ask them directly. E-mail, call them, or file a request through their web support. Copyright © 2011 Cacheonix Systems
  • 83. Need help with scaling your application and improving its performance with distributed caching? Visit us at www.cacheonix.com Copyright © 2011 Cacheonix Systems
  • 84. Thank you! Copyright © 2011 Cacheonix Systems