SlideShare una empresa de Scribd logo
1 de 64
Descargar para leer sin conexión
Infinispan
from POC to Production
Who am I?
   Mark Addy, Senior Consultant




Fast, Reliable, Secure, Manageable
Agenda
Part 1
• An existing production system unable to scale


Part 2
• A green-field project unable to meet SLA’s
About the Customer
• Global on-line travel & accommodation
  provider
  – 50 million searches per day
• Our relationship
  – Troubleshooting
  – Workshops
Part 1


         Part 1 – Existing Application
     Connectivity Engine
     • Supplements site content with data from
       third parties (Content Providers)
         – Tomcat
         – Spring
         – EhCache
         – MySQL
         – Apache load-balancer / mod_jk
Part 1


 Logical View
Part 1


         Content Provider Challenges
    •    Unreliable third party systems
    •    Distant network communications
    •    Critical for generating local site content
    •    Response time
    •    Choice & low response time == more
         profit
Part 1


                        Existing Cache
      • NOT Hibernate 2LC
      • Spring Interceptors wrap calls to content providers
<bean id="searchService" class="org.springframework.aop.framework.ProxyFactoryBean">
   <property name="proxyInterfaces" value=“ISearchServiceTargetBean"/>
   <property name="target" ref="searchServiceTargetBean"/>
   <property name="interceptorNames">
         <list>
                 <value>cacheInterceptor</value>
         </list>
   </property>
</bean>

<bean id="searchServiceTargetBean“ class=“SearchServiceTargetBean">
   ...
</bean>
Part 1


         Extreme Redundancy
               800,000 elements
          10 nodes = 10 copies of data
Part 1


                      The Price
     • 10G JVM Heap
         – 10-12 second pauses for major GC
         – Over 8G of heap is cache
     • Eviction before Expiry
         – More trips to content providers
     • EhCache expiry / eviction piggybacks
       client cache access
Part 1


  How to Scale?
Part 1


                     Objectives
     • Reduce JVM Heap Size
         – 10 second pauses are too long
     • Increase cache capacity
     • Remove Eviction
         – Cache entries should expire naturally
     • Improve Response Times
         – Latency decreases if eviction, GC pauses
           and frequency are reduced
Part 1


                   Discussions
     • Pre-sales workshop
         – Express Terracotta EhCache
         – Oracle Coherence
         – Infinispan
Part 1


             Why Infinispan?
    • Open source advocates
    • Cutting edge technology
Part 1


                  Benchmarking
     • Must be reproducible
     • Must reflect accurately the production
       load and data
         – 50 million searches / day == 600 / sec
     • Must be able to imitate the content
       providers
Part 1


                       Solution
     • Replica load-test environment
     • Port mirror production traffic
         – Capture incoming requests
         – Capture content provider responses
     • Custom JMeter script
     • Mock application Spring Beans
Part 1


         Benchmarking Architecture
Part 1


          Benchmarking Validation
     • Understand your cached data
         – jmap
         jmap –dump:file=mydump.hprof <pid>
         – Eclipse Memory Analyzer
         – OQL
                  SELECT
                  toString(x.key)
                  , x.key.@retainedHeapSize
                  , x.value.@retainedHeapSize
                  FROM net.sf.ehcache.Element x
Part 1


               Benchmarking Validation




  Extract cached object properties - you can learn a lot quickly
         –   creationTime             –   timeToLive
         –   lastAccessTime           –   timeToIdle
         –   lastUpdateTime           –   etc
         –   hitCount                 –   etc
Part 1


           Enable JMX for Infinispan
    Enable CacheManager Statistics
          <global>
             <globalJmxStatistics
               enabled="true"
               jmxDomain="org.infinispan"
               cacheManagerName=“MyCacheManager"/>
             ...
          </global>


    Enable Cache Statistics
         <default>
              <jmxStatistics enabled="true"/>
              ...
         </default>
Part 1


            Enable Remote JMX
    -Dcom.sun.management.jmxremote.port=nnnn
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
Part 1


             Record Performance
     • RHQ http://rhq-project.org
         – JVM memory, GC profile, CPU usage
         – Infinispan plugin
Part 1


         Infinispan
Part 1


         Distributed Mode
         hash(key) determines owners
Part 1


             Distribution Features
     • Configurable redundancy
         – numOwners
     • Dynamic scaling
         – Automatic rebalancing for distribution and
           recovery of redundancy
     • Replication (distribution) overhead does
       not increase as more nodes are added
Part 1


                        Hotrod
     • Client – Server architecture
         – Java client
         – Connection pooling
         – Dynamic scaling
         – Smart routing
     • Separate application and cache
       memory requirements
Part 1


    Application – Cache Separation
  Application
  • CPU intensive
  • High infant mortality
  Cache
  • Low CPU requirement
  • Mortality linked to
    expiry / eviction
Part 1


         Hotrod Architecture
Part 1


     Remember this is cutting edge
     • Latest final release was 4.2.1
     • Lets get cracking...
         – Distributed mode
         – Hotrod client
         – What issues did we encounter...
Part 1


  Topology Aware Consistent Hash
     • Ensure back-ups are held preferentially on
       separate machine, rack and site




     • https://community.jboss.org/thread/168236
     • We need to upgrade to the latest 5.0.0.CR
Part 1


               Virtual Nodes
    Sub-divides hash wheel positions




    <hash numVirtualNodes=2/>
Part 1


                  Virtual Nodes
     • Improves data distribution




     • But didn’t work at the time for Hotrod
     • https://issues.jboss.org/browse/ISPN-1217
Part 1


         Hotrod Concurrent Start-up
 • Dynamic scaling
    – Replicated ___hotRodTopologyCache holds current cluster topology




    – New starters must lock and update this cache to add themselves to
      the current view
    – Deadlock!
    – https://issues.jboss.org/browse/ISPN-1182
 • Stagger start-up
Part 1


     Hotrod Client Failure Detection
         Unable to recover from cluster splits
Part 1


    Hotrod Client Failure Detection
    • New servers only added to
      ___hotRodTopologyCache on start-up
    • Restart required to re-establish client topology view
Part 1


   Hotrod Server Cluster Meltdown
Part 1


   Hotrod Server Cluster Meltdown
     • Clients can’t start without an available
       server
     • Static Configuration is only read once
     • To restart client-server communications
       either
         – Restart last “known” server
         – Restart the client
Part 1


                      Change of tack
     • Hotrod abandoned, for now
         –   Data distribution
         –   Concurrent start up
         –   Failure detection
         –   Unacceptable for this customer
     • Enter the classic embedded approach




     • How did we get this to work...
Part 1


                    Dynamic Scaling
    • Unpredictable under heavy load, writers blocked
         – Unacceptable waits for this system
           <hash numOwners=“2” rehashEnabled=“false” />
         – Accept some data loss during a leave / join
    • Chunked rehashing / state transfer (5.1)
         – https://issues.jboss.org/browse/ISPN-284
    • Non-blocking state transfer
         – https://issues.jboss.org/browse/ISPN-1424
    • Manual rehashing
         – https://issues.jboss.org/browse/ISPN-1394
Part 1


                 Cache Entry Size
    • Average cache entry ~6K
         – 1 million entries = 6GB
         – Hotrod stores serialized entries by default
    • JBoss Marshalling
         – Default Infinispan mechanism
         – Get reference from ComponentRegistry
    • JBoss Serialization
         – Quick, easy to implement
Part 1


         Compression Considerations
     • Trade
         – Capacity in JVM vs Serialization Overhead
     • Suitability
         – Assess on a cache by cache basis
         – Very high access is probably too expensive
     • Average 6K reduced to 1K
Part 1


           Advanced Cache Tuning
     cache.getAdvancedCache.withFlags(Flag... flags)
     • Flag.SKIP_REMOTE_LOOKUP
        – Prevents remote gets being run for an update
          put(K key, V value)
     DistributionInterceptor.remoteGetBeforeWrite()
     DistributionInterceptor.handleWriteCommand()
     DistributionInterceptor.visitPutKeyValueCommand()
         – We don’t need to return the previous cache entry
           value
Part 1


                         JGroups
    • UDP out-performed TCP (for us)
    • Discovery
         – For a cold, full cluster start-up avoid split
           brain / merge scenarios
           <PING timeout="3000" num_initial_members="10"/>

    • Heartbeat
         – Ensure failure detection is configured
           appropriately
           <FD_ALL interval="3000" timeout="10000"/>
Part 1


         Extending Embedded
Part 1


         Current Production System
    • Over 20 nodes
         – 8 Request facing, remainder storage only
    • Over 15 million entries
         – 7.5 million unique
         – 20GB cached data
         – Nothing is evicted before natural expiration
    • 5GB JVM Heap, 3-4 second GC pauses
    • 30% reduction in response times
Part 1


                           Summary
     • Don’t compromise on the benchmarking
         – Understand your cached data profile
         – Functional testing is NOT sufficient
         – Monitoring and Analysis is essential
     • Tune Virtual Nodes for best distribution
     • Mitigate memory usage of embedded cache
         – Consider compressing embedded cache entries
         – Non request facing storage nodes
     • Distributed Infinispan out performs EhCache
     • Don’t rule Hotrod out
         – Not acceptable for this customer
         – Many improvements and bug fixes
Part 2


         Part 2 – Green Field SLA’s
    New Pricing Engine
         –   Tomcat
         –   Spring & Grails
         –   Infinispan
         –   Oracle RAC
         –   Apache load-balancer / mod_jk
    Historical Pricing Engine
         – EhCache
         – MySQL
         – 2 second full Paris Query
Part 2


                        Logical View
  • New Pricing Engine
         – Side by side rollout
         – Controller determines
           where to send requests and
           aggregates results
         – NOT Hibernate 2LC
         – Spring Interceptors
           containing logic to check /
           update cache wrap calls to
           DB that extract and
           generate cache entries
Part 2


                Proposed Caching
    • Everything distributed
         – It worked before so we just turn in on, right?
Part 2


                         The Pain
     • Distributed Mode
         – Network saturation on 1Gb switch
           (125MB/second) under load
         – Contention in org.jgroups
     • Performance SLA’s
         – Caching data in Local mode required 14G heap &
           20 second GC pauses
     • Aggressive rollout strategy
         – Struggling at low user load
Part 2


                    Cache Analysis

 • Eclipse Memory Analyzer
    – Identify cache profile
    – Small subset of elements account for
      almost all the space
    – Paris “Rates” sizes 20K – 1.6MB
    – Paris search (500 rates records) ==
      50MB total
    – 1Gb switch max throughput =
      125MB/second
Part 2


              Revised Caching
    • Local caching for numerous “small” elements
    • Distributed for “large” expensive elements
Part 2


                  Distributed Issue
 • Here’s why normal distributed doesn’t work
    – One Paris request requires 500 rates records (50MB)
    – 10 nodes distributed cluster = 1 in 5 chance data is local
    – 80% remote Gets == 40MB network traffic
Part 2


                             Options
  • Rewrite the application caching logic
         – Significantly reduce the element size
  • Run Local caching with oversized heap
         – Daily restart, eliminate full GC pauses
         – Large memory investment and careful management
  • Sacrifice caching and hit the DB
         – Hits response times and hammer the database
  • Distributed Execution?
         – Send a task to the data and extract just what you need
Part 2


          Change in Psychology...
           If the mountain will not come to
         Muhammad, then Muhammad must go
                    to the mountain
Part 2


                  Distributed Execution
  • DefaultExecutorService
         – http://docs.jboss.org/infinispan/5.1/apidocs/org/infinispan/distexec
           /DefaultExecutorService.html
  • Create the Distributed Execution Service to run on the cache
    node specified
     public DefaultExecutorService(Cache masterCacheNode)
  • Run task on primary owner of Key input
     public Future<T> submit(Callable<T> task, K... input)
         – Resolve primary owner of Key then either
             • Run locally
             • Issue a remote command and run on the owning node
Part 2


                Pricing Controller
     • Callable task
         – Contains code to
           • Grab reference to local Spring Context
           • Load required beans
           • Spring interceptor checks cache at the owning
Existing     node (local get)
 Code      • If not found then goto database, retrieve and
             update cache
           • Extract pricing based on request criteria
           • Return results
Part 2


                    Pricing Controller
 • Create a new DefaultExecutorService
    – Create callable tasks required to satisfy request
    – Issue callable tasks concurrently
    while (moreKeys) {
       Callable<T> callable = new MyCallable<T>(...);
       Future<T> future = distributedExecutorService.submit(callable, key);
       ...
    }

    – Collate results and assemble response
    while (moreFutures) {
       T result = future.get();
    }
Part 2


           Distributed Execution
    • Only the relevant information from the cache
      entry is returned
Part 2


                       Results
     • Latency – Paris search
         – Historic Engine 2 seconds
         – Dist-Exec 200ms
     • JVM
         – 5GB Heap
         – 3-4 second pauses
Part 2


                        Limitations
     • Failover
         – Task sent to primary owner only
         – https://community.jboss.org/wiki/Infinispan60-
           DistributedExecutionEnhancements
         – Handle failures yourself
     • Hotrod not supported
         – This would be fantastic!
         – https://issues.jboss.org/browse/ISPN-1094
     • Both in 6.0?
Part 2


                         Summary
     • Analysis and re-design of cached data
     • Accessing large data sets requires an
       alternative access pattern
     • Dramatically reduced latency
         – Parallel execution
         – Fraction of data transferred across the wire
     • Execution failures must be handled by
       application code, at the moment...
Thanks for Listening!

    Any Questions?

Más contenido relacionado

La actualidad más candente

A glimpse of cassandra 4.0 features netflix
A glimpse of cassandra 4.0 features   netflixA glimpse of cassandra 4.0 features   netflix
A glimpse of cassandra 4.0 features netflixVinay Kumar Chella
 
MySQL Replication Alternative: Pros and Cons
MySQL Replication Alternative: Pros and ConsMySQL Replication Alternative: Pros and Cons
MySQL Replication Alternative: Pros and ConsDarpan Dinker
 
Tips and Tricks for Operating Apache Kafka
Tips and Tricks for Operating Apache KafkaTips and Tricks for Operating Apache Kafka
Tips and Tricks for Operating Apache KafkaAll Things Open
 
Performance Monitoring: Understanding Your Scylla Cluster
Performance Monitoring: Understanding Your Scylla ClusterPerformance Monitoring: Understanding Your Scylla Cluster
Performance Monitoring: Understanding Your Scylla ClusterScyllaDB
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Marco Tusa
 
Make 2016 your year of SMACK talk
Make 2016 your year of SMACK talkMake 2016 your year of SMACK talk
Make 2016 your year of SMACK talkDataStax Academy
 
Client Drivers and Cassandra, the Right Way
Client Drivers and Cassandra, the Right WayClient Drivers and Cassandra, the Right Way
Client Drivers and Cassandra, the Right WayDataStax Academy
 
Zero Downtime Schema Changes - Galera Cluster - Best Practices
Zero Downtime Schema Changes - Galera Cluster - Best PracticesZero Downtime Schema Changes - Galera Cluster - Best Practices
Zero Downtime Schema Changes - Galera Cluster - Best PracticesSeveralnines
 
M|18 Where and How to Optimize for Performance
M|18 Where and How to Optimize for PerformanceM|18 Where and How to Optimize for Performance
M|18 Where and How to Optimize for PerformanceMariaDB plc
 
Performance tuning - A key to successful cassandra migration
Performance tuning - A key to successful cassandra migrationPerformance tuning - A key to successful cassandra migration
Performance tuning - A key to successful cassandra migrationRamkumar Nottath
 
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQDataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQHakka Labs
 
Lessons learned from scaling YARN to 40K machines in a multi tenancy environment
Lessons learned from scaling YARN to 40K machines in a multi tenancy environmentLessons learned from scaling YARN to 40K machines in a multi tenancy environment
Lessons learned from scaling YARN to 40K machines in a multi tenancy environmentDataWorks Summit
 

La actualidad más candente (20)

Planning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera ClusterPlanning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera Cluster
 
A glimpse of cassandra 4.0 features netflix
A glimpse of cassandra 4.0 features   netflixA glimpse of cassandra 4.0 features   netflix
A glimpse of cassandra 4.0 features netflix
 
Galera Cluster Best Practices for DBA's and DevOps Part 1
Galera Cluster Best Practices for DBA's and DevOps Part 1Galera Cluster Best Practices for DBA's and DevOps Part 1
Galera Cluster Best Practices for DBA's and DevOps Part 1
 
MySQL Replication Alternative: Pros and Cons
MySQL Replication Alternative: Pros and ConsMySQL Replication Alternative: Pros and Cons
MySQL Replication Alternative: Pros and Cons
 
Tips and Tricks for Operating Apache Kafka
Tips and Tricks for Operating Apache KafkaTips and Tricks for Operating Apache Kafka
Tips and Tricks for Operating Apache Kafka
 
Advanced Operations
Advanced OperationsAdvanced Operations
Advanced Operations
 
Performance Monitoring: Understanding Your Scylla Cluster
Performance Monitoring: Understanding Your Scylla ClusterPerformance Monitoring: Understanding Your Scylla Cluster
Performance Monitoring: Understanding Your Scylla Cluster
 
Introduction to Galera Cluster
Introduction to Galera ClusterIntroduction to Galera Cluster
Introduction to Galera Cluster
 
How to understand Galera Cluster - 2013
How to understand Galera Cluster - 2013How to understand Galera Cluster - 2013
How to understand Galera Cluster - 2013
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2
 
SQL Azure in deep
SQL Azure in deepSQL Azure in deep
SQL Azure in deep
 
Java Performance Tuning
Java Performance TuningJava Performance Tuning
Java Performance Tuning
 
Make 2016 your year of SMACK talk
Make 2016 your year of SMACK talkMake 2016 your year of SMACK talk
Make 2016 your year of SMACK talk
 
Client Drivers and Cassandra, the Right Way
Client Drivers and Cassandra, the Right WayClient Drivers and Cassandra, the Right Way
Client Drivers and Cassandra, the Right Way
 
Galera Cluster 3.0 Features
Galera Cluster 3.0 FeaturesGalera Cluster 3.0 Features
Galera Cluster 3.0 Features
 
Zero Downtime Schema Changes - Galera Cluster - Best Practices
Zero Downtime Schema Changes - Galera Cluster - Best PracticesZero Downtime Schema Changes - Galera Cluster - Best Practices
Zero Downtime Schema Changes - Galera Cluster - Best Practices
 
M|18 Where and How to Optimize for Performance
M|18 Where and How to Optimize for PerformanceM|18 Where and How to Optimize for Performance
M|18 Where and How to Optimize for Performance
 
Performance tuning - A key to successful cassandra migration
Performance tuning - A key to successful cassandra migrationPerformance tuning - A key to successful cassandra migration
Performance tuning - A key to successful cassandra migration
 
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQDataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
DataEngConf SF16 - BYOMQ: Why We [re]Built IronMQ
 
Lessons learned from scaling YARN to 40K machines in a multi tenancy environment
Lessons learned from scaling YARN to 40K machines in a multi tenancy environmentLessons learned from scaling YARN to 40K machines in a multi tenancy environment
Lessons learned from scaling YARN to 40K machines in a multi tenancy environment
 

Destacado

Real World Use Cases and Success Stories for In-Memory Data Grids (TIBCO Acti...
Real World Use Cases and Success Stories for In-Memory Data Grids (TIBCO Acti...Real World Use Cases and Success Stories for In-Memory Data Grids (TIBCO Acti...
Real World Use Cases and Success Stories for In-Memory Data Grids (TIBCO Acti...Kai Wähner
 
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347Manik Surtani
 
Building Wall St Risk Systems with Apache Geode
Building Wall St Risk Systems with Apache GeodeBuilding Wall St Risk Systems with Apache Geode
Building Wall St Risk Systems with Apache GeodeAndre Langevin
 
JBoss Community Introduction
JBoss Community IntroductionJBoss Community Introduction
JBoss Community Introductionjbugkorea
 
Архитектура Apache Ignite .NET
Архитектура Apache Ignite .NETАрхитектура Apache Ignite .NET
Архитектура Apache Ignite .NETMikhail Shcherbakov
 
Apache conbigdata2015 christiantzolov-federated sql on hadoop and beyond- lev...
Apache conbigdata2015 christiantzolov-federated sql on hadoop and beyond- lev...Apache conbigdata2015 christiantzolov-federated sql on hadoop and beyond- lev...
Apache conbigdata2015 christiantzolov-federated sql on hadoop and beyond- lev...Christian Tzolov
 
Apache Geode - The First Six Months
Apache Geode -  The First Six MonthsApache Geode -  The First Six Months
Apache Geode - The First Six MonthsAnthony Baker
 
Infinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLInfinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLManik Surtani
 
Hacking Infinispan: the new open source data grid meets NoSQL
Hacking Infinispan: the new open source data grid meets NoSQLHacking Infinispan: the new open source data grid meets NoSQL
Hacking Infinispan: the new open source data grid meets NoSQLCodemotion
 
Infinispan Servers: Beyond peer-to-peer data grids
Infinispan Servers: Beyond peer-to-peer data gridsInfinispan Servers: Beyond peer-to-peer data grids
Infinispan Servers: Beyond peer-to-peer data gridsGalder Zamarreño
 
Redis adaptor for Apache Geode
Redis adaptor for Apache GeodeRedis adaptor for Apache Geode
Redis adaptor for Apache GeodeSwapnil Bawaskar
 
Apache geode
Apache geodeApache geode
Apache geodeYogesh BG
 
Keeping Infinispan In Shape: Highly-Precise, Scalable Data Eviction
Keeping Infinispan In Shape: Highly-Precise, Scalable Data EvictionKeeping Infinispan In Shape: Highly-Precise, Scalable Data Eviction
Keeping Infinispan In Shape: Highly-Precise, Scalable Data EvictionGalder Zamarreño
 
Introduction to Apache Geode (Cork, Ireland)
Introduction to Apache Geode (Cork, Ireland)Introduction to Apache Geode (Cork, Ireland)
Introduction to Apache Geode (Cork, Ireland)Anthony Baker
 
Apache Geode Clubhouse - WAN-based Replication
Apache Geode Clubhouse - WAN-based ReplicationApache Geode Clubhouse - WAN-based Replication
Apache Geode Clubhouse - WAN-based ReplicationPivotalOpenSourceHub
 
인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처Jaehong Cheon
 
Infinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridInfinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridJBug Italy
 
Building Apps with Distributed In-Memory Computing Using Apache Geode
Building Apps with Distributed In-Memory Computing Using Apache GeodeBuilding Apps with Distributed In-Memory Computing Using Apache Geode
Building Apps with Distributed In-Memory Computing Using Apache GeodePivotalOpenSourceHub
 
An Introduction to Apache Geode (incubating)
An Introduction to Apache Geode (incubating)An Introduction to Apache Geode (incubating)
An Introduction to Apache Geode (incubating)Anthony Baker
 

Destacado (20)

Real World Use Cases and Success Stories for In-Memory Data Grids (TIBCO Acti...
Real World Use Cases and Success Stories for In-Memory Data Grids (TIBCO Acti...Real World Use Cases and Success Stories for In-Memory Data Grids (TIBCO Acti...
Real World Use Cases and Success Stories for In-Memory Data Grids (TIBCO Acti...
 
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
Infinispan, Data Grids, NoSQL, Cloud Storage and JSR 347
 
Building Wall St Risk Systems with Apache Geode
Building Wall St Risk Systems with Apache GeodeBuilding Wall St Risk Systems with Apache Geode
Building Wall St Risk Systems with Apache Geode
 
JBoss Community Introduction
JBoss Community IntroductionJBoss Community Introduction
JBoss Community Introduction
 
Архитектура Apache Ignite .NET
Архитектура Apache Ignite .NETАрхитектура Apache Ignite .NET
Архитектура Apache Ignite .NET
 
Apache conbigdata2015 christiantzolov-federated sql on hadoop and beyond- lev...
Apache conbigdata2015 christiantzolov-federated sql on hadoop and beyond- lev...Apache conbigdata2015 christiantzolov-federated sql on hadoop and beyond- lev...
Apache conbigdata2015 christiantzolov-federated sql on hadoop and beyond- lev...
 
Apache Geode - The First Six Months
Apache Geode -  The First Six MonthsApache Geode -  The First Six Months
Apache Geode - The First Six Months
 
Infinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQLInfinspan: In-memory data grid meets NoSQL
Infinspan: In-memory data grid meets NoSQL
 
Hacking Infinispan: the new open source data grid meets NoSQL
Hacking Infinispan: the new open source data grid meets NoSQLHacking Infinispan: the new open source data grid meets NoSQL
Hacking Infinispan: the new open source data grid meets NoSQL
 
Infinispan Servers: Beyond peer-to-peer data grids
Infinispan Servers: Beyond peer-to-peer data gridsInfinispan Servers: Beyond peer-to-peer data grids
Infinispan Servers: Beyond peer-to-peer data grids
 
Redis adaptor for Apache Geode
Redis adaptor for Apache GeodeRedis adaptor for Apache Geode
Redis adaptor for Apache Geode
 
Apache geode
Apache geodeApache geode
Apache geode
 
Keeping Infinispan In Shape: Highly-Precise, Scalable Data Eviction
Keeping Infinispan In Shape: Highly-Precise, Scalable Data EvictionKeeping Infinispan In Shape: Highly-Precise, Scalable Data Eviction
Keeping Infinispan In Shape: Highly-Precise, Scalable Data Eviction
 
Introduction to Apache Geode (Cork, Ireland)
Introduction to Apache Geode (Cork, Ireland)Introduction to Apache Geode (Cork, Ireland)
Introduction to Apache Geode (Cork, Ireland)
 
Apache Geode Clubhouse - WAN-based Replication
Apache Geode Clubhouse - WAN-based ReplicationApache Geode Clubhouse - WAN-based Replication
Apache Geode Clubhouse - WAN-based Replication
 
인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처
 
Infinispan and Enterprise Data Grid
Infinispan and Enterprise Data GridInfinispan and Enterprise Data Grid
Infinispan and Enterprise Data Grid
 
Building Apps with Distributed In-Memory Computing Using Apache Geode
Building Apps with Distributed In-Memory Computing Using Apache GeodeBuilding Apps with Distributed In-Memory Computing Using Apache Geode
Building Apps with Distributed In-Memory Computing Using Apache Geode
 
An Introduction to Apache Geode (incubating)
An Introduction to Apache Geode (incubating)An Introduction to Apache Geode (incubating)
An Introduction to Apache Geode (incubating)
 
Data Grids and Data Caching
Data Grids and Data CachingData Grids and Data Caching
Data Grids and Data Caching
 

Similar a Infinispan from POC to Production

Apache Performance Tuning: Scaling Out
Apache Performance Tuning: Scaling OutApache Performance Tuning: Scaling Out
Apache Performance Tuning: Scaling OutSander Temme
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Performance_Out.pptx
Performance_Out.pptxPerformance_Out.pptx
Performance_Out.pptxsanjanabal
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...
Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...
Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...Flink Forward
 
Diagnosing Problems in Production - Cassandra
Diagnosing Problems in Production - CassandraDiagnosing Problems in Production - Cassandra
Diagnosing Problems in Production - CassandraJon Haddad
 
Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement
Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement
Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement VMware Tanzu
 
ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?Jagadish Venkatraman
 
Apache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling UpApache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling UpSander Temme
 

Similar a Infinispan from POC to Production (20)

Apache Performance Tuning: Scaling Out
Apache Performance Tuning: Scaling OutApache Performance Tuning: Scaling Out
Apache Performance Tuning: Scaling Out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance_Out.pptx
Performance_Out.pptxPerformance_Out.pptx
Performance_Out.pptx
 
2 7
2 72 7
2 7
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
title
titletitle
title
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...
Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...
Flink Forward SF 2017: Feng Wang & Zhijiang Wang - Runtime Improvements in Bl...
 
Diagnosing Problems in Production - Cassandra
Diagnosing Problems in Production - CassandraDiagnosing Problems in Production - Cassandra
Diagnosing Problems in Production - Cassandra
 
Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement
Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement
Slides for the Apache Geode Hands-on Meetup and Hackathon Announcement
 
Performance out
Performance outPerformance out
Performance out
 
ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?ApacheCon BigData - What it takes to process a trillion events a day?
ApacheCon BigData - What it takes to process a trillion events a day?
 
Apache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling UpApache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling Up
 

Más de C2B2 Consulting

Monitoring Oracle SOA Suite - UKOUG Tech15 2015
Monitoring Oracle SOA Suite - UKOUG Tech15 2015Monitoring Oracle SOA Suite - UKOUG Tech15 2015
Monitoring Oracle SOA Suite - UKOUG Tech15 2015C2B2 Consulting
 
Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandC2B2 Consulting
 
Monitoring Oracle SOA Suite
Monitoring Oracle SOA SuiteMonitoring Oracle SOA Suite
Monitoring Oracle SOA SuiteC2B2 Consulting
 
Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid C2B2 Consulting
 
Building WebLogic Domains With WLST
Building WebLogic Domains With WLSTBuilding WebLogic Domains With WLST
Building WebLogic Domains With WLSTC2B2 Consulting
 
Hands-on Performance Workshop - The science of performance
Hands-on Performance Workshop - The science of performanceHands-on Performance Workshop - The science of performance
Hands-on Performance Workshop - The science of performanceC2B2 Consulting
 
Jsr107 come, code, cache, compute!
Jsr107 come, code, cache, compute!Jsr107 come, code, cache, compute!
Jsr107 come, code, cache, compute!C2B2 Consulting
 
JBoss Clustering on OpenShift
JBoss Clustering on OpenShiftJBoss Clustering on OpenShift
JBoss Clustering on OpenShiftC2B2 Consulting
 
Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the ...
Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the ...Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the ...
Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the ...C2B2 Consulting
 
Oracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at Scale
Oracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at ScaleOracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at Scale
Oracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at ScaleC2B2 Consulting
 
Java Middleware Surgery
Java Middleware Surgery Java Middleware Surgery
Java Middleware Surgery C2B2 Consulting
 
Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...
Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...
Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...C2B2 Consulting
 
'Deploying with GlassFish & Docker'
'Deploying with GlassFish & Docker' 'Deploying with GlassFish & Docker'
'Deploying with GlassFish & Docker' C2B2 Consulting
 
'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit'
'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit' 'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit'
'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit' C2B2 Consulting
 
'New JMS features in GlassFish 4.0' by Nigel Deakin
'New JMS features in GlassFish 4.0' by Nigel Deakin'New JMS features in GlassFish 4.0' by Nigel Deakin
'New JMS features in GlassFish 4.0' by Nigel DeakinC2B2 Consulting
 
Coherence sig-nfr-web-tier-scaling-using-coherence-web
Coherence sig-nfr-web-tier-scaling-using-coherence-webCoherence sig-nfr-web-tier-scaling-using-coherence-web
Coherence sig-nfr-web-tier-scaling-using-coherence-webC2B2 Consulting
 
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at ScaleJUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at ScaleC2B2 Consulting
 

Más de C2B2 Consulting (20)

Monitoring Oracle SOA Suite - UKOUG Tech15 2015
Monitoring Oracle SOA Suite - UKOUG Tech15 2015Monitoring Oracle SOA Suite - UKOUG Tech15 2015
Monitoring Oracle SOA Suite - UKOUG Tech15 2015
 
Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx Poland
 
Monitoring Oracle SOA Suite
Monitoring Oracle SOA SuiteMonitoring Oracle SOA Suite
Monitoring Oracle SOA Suite
 
Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid Advanced queries on the Infinispan Data Grid
Advanced queries on the Infinispan Data Grid
 
Through the JMX Window
Through the JMX WindowThrough the JMX Window
Through the JMX Window
 
Building WebLogic Domains With WLST
Building WebLogic Domains With WLSTBuilding WebLogic Domains With WLST
Building WebLogic Domains With WLST
 
Hands-on Performance Workshop - The science of performance
Hands-on Performance Workshop - The science of performanceHands-on Performance Workshop - The science of performance
Hands-on Performance Workshop - The science of performance
 
Jsr107 come, code, cache, compute!
Jsr107 come, code, cache, compute!Jsr107 come, code, cache, compute!
Jsr107 come, code, cache, compute!
 
JBoss Clustering on OpenShift
JBoss Clustering on OpenShiftJBoss Clustering on OpenShift
JBoss Clustering on OpenShift
 
Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the ...
Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the ...Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the ...
Dr. Low Latency or: How I Learned to Stop Worrying about Pauses and Love the ...
 
Through the JMX Window
Through the JMX WindowThrough the JMX Window
Through the JMX Window
 
Oracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at Scale
Oracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at ScaleOracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at Scale
Oracle Coherence & WebLogic 12c Web Sockets: Delivering Real Time Push at Scale
 
Java Middleware Surgery
Java Middleware Surgery Java Middleware Surgery
Java Middleware Surgery
 
Jax London 2013
Jax London 2013Jax London 2013
Jax London 2013
 
Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...
Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...
Oracle SOA Suite Performance Tuning- UKOUG Application Server & Middleware SI...
 
'Deploying with GlassFish & Docker'
'Deploying with GlassFish & Docker' 'Deploying with GlassFish & Docker'
'Deploying with GlassFish & Docker'
 
'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit'
'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit' 'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit'
'JMS @ Data Grid? Hacking the Glassfish messaging for fun & profit'
 
'New JMS features in GlassFish 4.0' by Nigel Deakin
'New JMS features in GlassFish 4.0' by Nigel Deakin'New JMS features in GlassFish 4.0' by Nigel Deakin
'New JMS features in GlassFish 4.0' by Nigel Deakin
 
Coherence sig-nfr-web-tier-scaling-using-coherence-web
Coherence sig-nfr-web-tier-scaling-using-coherence-webCoherence sig-nfr-web-tier-scaling-using-coherence-web
Coherence sig-nfr-web-tier-scaling-using-coherence-web
 
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at ScaleJUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
 

Último

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Último (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Infinispan from POC to Production

  • 1.
  • 3. Who am I? Mark Addy, Senior Consultant Fast, Reliable, Secure, Manageable
  • 4. Agenda Part 1 • An existing production system unable to scale Part 2 • A green-field project unable to meet SLA’s
  • 5. About the Customer • Global on-line travel & accommodation provider – 50 million searches per day • Our relationship – Troubleshooting – Workshops
  • 6. Part 1 Part 1 – Existing Application Connectivity Engine • Supplements site content with data from third parties (Content Providers) – Tomcat – Spring – EhCache – MySQL – Apache load-balancer / mod_jk
  • 8. Part 1 Content Provider Challenges • Unreliable third party systems • Distant network communications • Critical for generating local site content • Response time • Choice & low response time == more profit
  • 9. Part 1 Existing Cache • NOT Hibernate 2LC • Spring Interceptors wrap calls to content providers <bean id="searchService" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces" value=“ISearchServiceTargetBean"/> <property name="target" ref="searchServiceTargetBean"/> <property name="interceptorNames"> <list> <value>cacheInterceptor</value> </list> </property> </bean> <bean id="searchServiceTargetBean“ class=“SearchServiceTargetBean"> ... </bean>
  • 10. Part 1 Extreme Redundancy 800,000 elements 10 nodes = 10 copies of data
  • 11. Part 1 The Price • 10G JVM Heap – 10-12 second pauses for major GC – Over 8G of heap is cache • Eviction before Expiry – More trips to content providers • EhCache expiry / eviction piggybacks client cache access
  • 12. Part 1 How to Scale?
  • 13. Part 1 Objectives • Reduce JVM Heap Size – 10 second pauses are too long • Increase cache capacity • Remove Eviction – Cache entries should expire naturally • Improve Response Times – Latency decreases if eviction, GC pauses and frequency are reduced
  • 14. Part 1 Discussions • Pre-sales workshop – Express Terracotta EhCache – Oracle Coherence – Infinispan
  • 15. Part 1 Why Infinispan? • Open source advocates • Cutting edge technology
  • 16. Part 1 Benchmarking • Must be reproducible • Must reflect accurately the production load and data – 50 million searches / day == 600 / sec • Must be able to imitate the content providers
  • 17. Part 1 Solution • Replica load-test environment • Port mirror production traffic – Capture incoming requests – Capture content provider responses • Custom JMeter script • Mock application Spring Beans
  • 18. Part 1 Benchmarking Architecture
  • 19. Part 1 Benchmarking Validation • Understand your cached data – jmap jmap –dump:file=mydump.hprof <pid> – Eclipse Memory Analyzer – OQL SELECT toString(x.key) , x.key.@retainedHeapSize , x.value.@retainedHeapSize FROM net.sf.ehcache.Element x
  • 20. Part 1 Benchmarking Validation Extract cached object properties - you can learn a lot quickly – creationTime – timeToLive – lastAccessTime – timeToIdle – lastUpdateTime – etc – hitCount – etc
  • 21. Part 1 Enable JMX for Infinispan Enable CacheManager Statistics <global> <globalJmxStatistics enabled="true" jmxDomain="org.infinispan" cacheManagerName=“MyCacheManager"/> ... </global> Enable Cache Statistics <default> <jmxStatistics enabled="true"/> ... </default>
  • 22. Part 1 Enable Remote JMX -Dcom.sun.management.jmxremote.port=nnnn -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
  • 23. Part 1 Record Performance • RHQ http://rhq-project.org – JVM memory, GC profile, CPU usage – Infinispan plugin
  • 24. Part 1 Infinispan
  • 25. Part 1 Distributed Mode hash(key) determines owners
  • 26. Part 1 Distribution Features • Configurable redundancy – numOwners • Dynamic scaling – Automatic rebalancing for distribution and recovery of redundancy • Replication (distribution) overhead does not increase as more nodes are added
  • 27. Part 1 Hotrod • Client – Server architecture – Java client – Connection pooling – Dynamic scaling – Smart routing • Separate application and cache memory requirements
  • 28. Part 1 Application – Cache Separation Application • CPU intensive • High infant mortality Cache • Low CPU requirement • Mortality linked to expiry / eviction
  • 29. Part 1 Hotrod Architecture
  • 30. Part 1 Remember this is cutting edge • Latest final release was 4.2.1 • Lets get cracking... – Distributed mode – Hotrod client – What issues did we encounter...
  • 31. Part 1 Topology Aware Consistent Hash • Ensure back-ups are held preferentially on separate machine, rack and site • https://community.jboss.org/thread/168236 • We need to upgrade to the latest 5.0.0.CR
  • 32. Part 1 Virtual Nodes Sub-divides hash wheel positions <hash numVirtualNodes=2/>
  • 33. Part 1 Virtual Nodes • Improves data distribution • But didn’t work at the time for Hotrod • https://issues.jboss.org/browse/ISPN-1217
  • 34. Part 1 Hotrod Concurrent Start-up • Dynamic scaling – Replicated ___hotRodTopologyCache holds current cluster topology – New starters must lock and update this cache to add themselves to the current view – Deadlock! – https://issues.jboss.org/browse/ISPN-1182 • Stagger start-up
  • 35. Part 1 Hotrod Client Failure Detection Unable to recover from cluster splits
  • 36. Part 1 Hotrod Client Failure Detection • New servers only added to ___hotRodTopologyCache on start-up • Restart required to re-establish client topology view
  • 37. Part 1 Hotrod Server Cluster Meltdown
  • 38. Part 1 Hotrod Server Cluster Meltdown • Clients can’t start without an available server • Static Configuration is only read once • To restart client-server communications either – Restart last “known” server – Restart the client
  • 39. Part 1 Change of tack • Hotrod abandoned, for now – Data distribution – Concurrent start up – Failure detection – Unacceptable for this customer • Enter the classic embedded approach • How did we get this to work...
  • 40. Part 1 Dynamic Scaling • Unpredictable under heavy load, writers blocked – Unacceptable waits for this system <hash numOwners=“2” rehashEnabled=“false” /> – Accept some data loss during a leave / join • Chunked rehashing / state transfer (5.1) – https://issues.jboss.org/browse/ISPN-284 • Non-blocking state transfer – https://issues.jboss.org/browse/ISPN-1424 • Manual rehashing – https://issues.jboss.org/browse/ISPN-1394
  • 41. Part 1 Cache Entry Size • Average cache entry ~6K – 1 million entries = 6GB – Hotrod stores serialized entries by default • JBoss Marshalling – Default Infinispan mechanism – Get reference from ComponentRegistry • JBoss Serialization – Quick, easy to implement
  • 42. Part 1 Compression Considerations • Trade – Capacity in JVM vs Serialization Overhead • Suitability – Assess on a cache by cache basis – Very high access is probably too expensive • Average 6K reduced to 1K
  • 43. Part 1 Advanced Cache Tuning cache.getAdvancedCache.withFlags(Flag... flags) • Flag.SKIP_REMOTE_LOOKUP – Prevents remote gets being run for an update put(K key, V value) DistributionInterceptor.remoteGetBeforeWrite() DistributionInterceptor.handleWriteCommand() DistributionInterceptor.visitPutKeyValueCommand() – We don’t need to return the previous cache entry value
  • 44. Part 1 JGroups • UDP out-performed TCP (for us) • Discovery – For a cold, full cluster start-up avoid split brain / merge scenarios <PING timeout="3000" num_initial_members="10"/> • Heartbeat – Ensure failure detection is configured appropriately <FD_ALL interval="3000" timeout="10000"/>
  • 45. Part 1 Extending Embedded
  • 46. Part 1 Current Production System • Over 20 nodes – 8 Request facing, remainder storage only • Over 15 million entries – 7.5 million unique – 20GB cached data – Nothing is evicted before natural expiration • 5GB JVM Heap, 3-4 second GC pauses • 30% reduction in response times
  • 47. Part 1 Summary • Don’t compromise on the benchmarking – Understand your cached data profile – Functional testing is NOT sufficient – Monitoring and Analysis is essential • Tune Virtual Nodes for best distribution • Mitigate memory usage of embedded cache – Consider compressing embedded cache entries – Non request facing storage nodes • Distributed Infinispan out performs EhCache • Don’t rule Hotrod out – Not acceptable for this customer – Many improvements and bug fixes
  • 48. Part 2 Part 2 – Green Field SLA’s New Pricing Engine – Tomcat – Spring & Grails – Infinispan – Oracle RAC – Apache load-balancer / mod_jk Historical Pricing Engine – EhCache – MySQL – 2 second full Paris Query
  • 49. Part 2 Logical View • New Pricing Engine – Side by side rollout – Controller determines where to send requests and aggregates results – NOT Hibernate 2LC – Spring Interceptors containing logic to check / update cache wrap calls to DB that extract and generate cache entries
  • 50. Part 2 Proposed Caching • Everything distributed – It worked before so we just turn in on, right?
  • 51. Part 2 The Pain • Distributed Mode – Network saturation on 1Gb switch (125MB/second) under load – Contention in org.jgroups • Performance SLA’s – Caching data in Local mode required 14G heap & 20 second GC pauses • Aggressive rollout strategy – Struggling at low user load
  • 52. Part 2 Cache Analysis • Eclipse Memory Analyzer – Identify cache profile – Small subset of elements account for almost all the space – Paris “Rates” sizes 20K – 1.6MB – Paris search (500 rates records) == 50MB total – 1Gb switch max throughput = 125MB/second
  • 53. Part 2 Revised Caching • Local caching for numerous “small” elements • Distributed for “large” expensive elements
  • 54. Part 2 Distributed Issue • Here’s why normal distributed doesn’t work – One Paris request requires 500 rates records (50MB) – 10 nodes distributed cluster = 1 in 5 chance data is local – 80% remote Gets == 40MB network traffic
  • 55. Part 2 Options • Rewrite the application caching logic – Significantly reduce the element size • Run Local caching with oversized heap – Daily restart, eliminate full GC pauses – Large memory investment and careful management • Sacrifice caching and hit the DB – Hits response times and hammer the database • Distributed Execution? – Send a task to the data and extract just what you need
  • 56. Part 2 Change in Psychology... If the mountain will not come to Muhammad, then Muhammad must go to the mountain
  • 57. Part 2 Distributed Execution • DefaultExecutorService – http://docs.jboss.org/infinispan/5.1/apidocs/org/infinispan/distexec /DefaultExecutorService.html • Create the Distributed Execution Service to run on the cache node specified public DefaultExecutorService(Cache masterCacheNode) • Run task on primary owner of Key input public Future<T> submit(Callable<T> task, K... input) – Resolve primary owner of Key then either • Run locally • Issue a remote command and run on the owning node
  • 58. Part 2 Pricing Controller • Callable task – Contains code to • Grab reference to local Spring Context • Load required beans • Spring interceptor checks cache at the owning Existing node (local get) Code • If not found then goto database, retrieve and update cache • Extract pricing based on request criteria • Return results
  • 59. Part 2 Pricing Controller • Create a new DefaultExecutorService – Create callable tasks required to satisfy request – Issue callable tasks concurrently while (moreKeys) { Callable<T> callable = new MyCallable<T>(...); Future<T> future = distributedExecutorService.submit(callable, key); ... } – Collate results and assemble response while (moreFutures) { T result = future.get(); }
  • 60. Part 2 Distributed Execution • Only the relevant information from the cache entry is returned
  • 61. Part 2 Results • Latency – Paris search – Historic Engine 2 seconds – Dist-Exec 200ms • JVM – 5GB Heap – 3-4 second pauses
  • 62. Part 2 Limitations • Failover – Task sent to primary owner only – https://community.jboss.org/wiki/Infinispan60- DistributedExecutionEnhancements – Handle failures yourself • Hotrod not supported – This would be fantastic! – https://issues.jboss.org/browse/ISPN-1094 • Both in 6.0?
  • 63. Part 2 Summary • Analysis and re-design of cached data • Accessing large data sets requires an alternative access pattern • Dramatically reduced latency – Parallel execution – Fraction of data transferred across the wire • Execution failures must be handled by application code, at the moment...
  • 64. Thanks for Listening! Any Questions?