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

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 
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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
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
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
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
 
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)
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
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!
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"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...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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?
 
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
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 

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