<Insert Picture Here>




Pimp My Data Grid
Brian Oliver
Senior Principal Solutions Architect (brian.oliver@oracle.com)

O...
Agenda

          •   An Architectural Challenge
          •   Enter the Data Grid
          •   Architectural Patterns th...
An Architectural Challenge


(c) Copyright 2008. Oracle Corporation
Scale this...

          • Domain: Retail Banking Infrastructure
                •    Over 500 Banks
                •    ...
Scale this...

          • Execution of Business Tasks
                • Account Balance, Credit/Debit, Funds Transfer, St...
Essentially want…

                interface Cloud {

                      public <T> Future<T> execute(Task<T> task);

 ...
Constraints...

          •   No Single Points of Failure                    • No Data or Task Loss
          •   No Simpl...
Enter the Data Grid


(c) Copyright 2008. Oracle Corporation
Enter the Data Grid

          • Data Grid ≈ Horizontally scalable in-memory data
            management

          • Goal...
Essentially replace this…




(c) Copyright 2008. Oracle Corporation
With this…




    Note to Marketing: Replace “Cloud” with Data Grid, Distributed Cache,
    Data Fabric, Information Fabr...
Success!




(c) Copyright 2008. Oracle Corporation
“What’s inside the Cloud?”




(c) Copyright 2008. Oracle Corporation
Architectural Patterns that Limit
          Scalability

(c) Copyright 2008. Oracle Corporation
Client + Server Pattern

     Server is point of contention

     Contention increases Server
     response time = increas...
Master + Worker Pattern

     Master is point of contention

     Contention increases Master
     response time = increas...
Master + Worker Pattern
     Reality...
     Typically Master + Worker actually is
     also Client + Server!

     Lesson...
Master + Worker Pattern
     Continued...
     Typically Master + Worker actually is
     also Client + Server!

     Ofte...
Increasing Resilience

     Increasing resilience increases
     latency

     Synchronously maintained resilience
     ty...
Partition for Parallelism


     Partition Data onto separate Masters
     to provide load-balancing and
     increase par...
Summary
          •   Avoid Single Points of Contention          • Avoid moving data
          •   Avoid Single Points of ...
Achieving Scalability and High
              Performance means...
          1. Doing something completely different
      ...
What about Coherence?


(c) Copyright 2007. Oracle Corporation
Oracle Coherence

• Provides…
  • Container-less peer-to-peer Clustering of Java Processes
  • Data Structures to manage D...
Oracle Coherence

• Development Toolkit
  •   Pure Java 1.4.2+ Libraries
  •   Pure .Net 1.1 and 2.0 (Client Libraries)
  ...
Oracle Coherence

• Some uses…
 • Caching state in the Application-tier
 • Relieve load on lower-tier systems
    • Databa...
Coherence Demonstration


(c) Copyright 2007. Oracle Corporation
Pimping Oracle Coherence...


(c) Copyright 2008. Oracle Corporation
Strategy

          • Business Tasks are regular Java objects (pojo)

          • Place Business Tasks into Coherence
    ...
Backing Map Listener is what?

          • Coherence distributes, manages and stores state
            (objects) using “Ba...
Strategy

          • As Tasks enter the “Cloud” Coherence notifies BML
          • Our BML implementation schedules, mana...
Backing Map Listener Code

          public class ExampleBackingMapListener extends
            AbstractMultiplexingBackin...
Backing Map Listener
              Configuration
          <distributed-scheme>
             <scheme-name>distributed-cach...
Results

          • While submitting Tasks (regular system load)
                • Test 1: Scale from 1 server to over 40...
Trading Exchange


(c) Copyright 2008. Oracle Corporation
Trading Exchange

          •   Similar requirements and constraints
          •   Order processing (Foreign Exchange)
   ...
Previous Next Generation
              Approach (failed to meet SLA’s)




(c) Copyright 2008. Oracle Corporation
Current Solution




(c) Copyright 2008. Oracle Corporation
Pimp my Data Grid


(c) Copyright 2008. Oracle Corporation
Pimp it!

          • Most Data Grids, especially Coherence are a fully
            pluggable

          • Coherence provi...
Pimp it – with Groovy

          • Instead of building object-based queries, why not use
            Groovy expressions?

...
Pimp it – with Spring

          • Instead of Spring wrapping your Data Grid, embed
            Spring applications in a D...
Getting
          Oracle Coherence

(c) Copyright 2008. Oracle Corporation
Oracle Coherence

• Search:                             Search For:
  • http://search.oracle.com          Coherence


• Do...
Thanks


(c) Copyright 2007. Oracle Corporation
Appendix


(c) Copyright 2008. Oracle Corporation
The preceding is intended to outline general product
              use and direction. It is intended for information
     ...
Brian Oliver  Pimp My Data Grid
Brian Oliver  Pimp My Data Grid
Brian Oliver  Pimp My Data Grid
Upcoming SlideShare
Loading in...5
×

Brian Oliver Pimp My Data Grid

3,201

Published on

Published in: Business, Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,201
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
127
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Brian Oliver Pimp My Data Grid

  1. 1. <Insert Picture Here> Pimp My Data Grid Brian Oliver Senior Principal Solutions Architect (brian.oliver@oracle.com) Oracle Coherence | Oracle Fusion Middleware
  2. 2. Agenda • An Architectural Challenge • Enter the Data Grid • Architectural Patterns that Limit Application Scalability • Pimping Data Grid • Service Grids • Trading Exchange • Agile Groovy Grid • Unstoppable Spring (c) Copyright 2007. Oracle Corporation
  3. 3. An Architectural Challenge (c) Copyright 2008. Oracle Corporation
  4. 4. Scale this... • Domain: Retail Banking Infrastructure • Over 500 Banks • 100,000+ Teller Staff Desktops Applications • 10,000+ Cash Machines (ATMs) • 10,000,000’s of Internet Banking Transactions/day • Current Infrastructure • Java SE based (no J2EE – apart from Servlets) • Oracle RAC (not an issue – scaling across a WAN ☺ ) • Messaging (serious challenges) • Processing Business Tasks (challenges approaching) • 30,000,000+ Business Tasks a day – minimum. • must do 100,000,000 effortlessly per/day before going live (c) Copyright 2007. Oracle Corporation
  5. 5. Scale this... • Execution of Business Tasks • Account Balance, Credit/Debit, Funds Transfer, Statement Processing, Batch Processing, Payment Processing • Tasks arrive from a variety of clients (thin, rich, cross- platform, mainframes...) – variety of languages • Goal: • Tasks are executed by the “cloud” The • Don’t want to build own “cloud” software Cloud • Their knowledege: • Massive experience in scale-out. Could build it themselves, but budget (time/resources/money) will be saved by buying. (c) Copyright 2007. Oracle Corporation
  6. 6. Essentially want… interface Cloud { public <T> Future<T> execute(Task<T> task); } (c) Copyright 2007. Oracle Corporation
  7. 7. Constraints... • No Single Points of Failure • No Data or Task Loss • No Simple Points of Bottleneck • During failure • During server upgrade • No Service Registries • During scale out • No Masters + Workers • No Transactions (XA) • already got one that is partitioned into over 200 separate clusters • Support multiple versions • No Manual Partitioning • Predictable response times • Keep everything in Memory • Predictable scale out costs • Active + Active Sites • Manage via JMX, from any point • Across WAN in the “Cloud”. • Develop system on a note book • Pure Java Standard Edition • Scale to over 500 servers • Infrastructure add a maximum of • No reconfiguration outages 3ms latency to tasks. • No byte-code manipulation / • Integrate with existing proxies applications (Java 1.4.2+) (c) Copyright 2007. Oracle Corporation
  8. 8. Enter the Data Grid (c) Copyright 2008. Oracle Corporation
  9. 9. Enter the Data Grid • Data Grid ≈ Horizontally scalable in-memory data management • Goal • Eliminate data source contention by scaling out data management with commodity hardware • Underlying Philosophies… • Keep “data” in the “application-tier” (where it’s used) • “Disks are slow and databases are evil” • “Data Grids will solve your application scalability and performance problems” (c) Copyright 2008. Oracle Corporation
  10. 10. Essentially replace this… (c) Copyright 2008. Oracle Corporation
  11. 11. With this… Note to Marketing: Replace “Cloud” with Data Grid, Distributed Cache, Data Fabric, Information Fabric, Network Attached Storage, Java Space, Service Grid, Compute Grid, Object Grid, Shared Memory or other term ☺ (c) Copyright 2008. Oracle Corporation
  12. 12. Success! (c) Copyright 2008. Oracle Corporation
  13. 13. “What’s inside the Cloud?” (c) Copyright 2008. Oracle Corporation
  14. 14. Architectural Patterns that Limit Scalability (c) Copyright 2008. Oracle Corporation
  15. 15. Client + Server Pattern Server is point of contention Contention increases Server response time = increased Client latencies Client scale-out increases contention Not just Database related. Consider Store-and-Forward messaging systems and Spaces The server may be a “switch” Lesson: Avoid Single Points of Contention / Bottleneck (SPOB) (c) Copyright 2008. Oracle Corporation
  16. 16. Master + Worker Pattern Master is point of contention Contention increases Master response time = increases Worker (and requestor) Latencies Scale-out increases contention Lesson: Avoid Single Points of Contention / Bottleneck (SPOB) (c) Copyright 2008. Oracle Corporation
  17. 17. Master + Worker Pattern Reality... Typically Master + Worker actually is also Client + Server! Lesson: Avoid patterns with SPOB! (c) Copyright 2008. Oracle Corporation
  18. 18. Master + Worker Pattern Continued... Typically Master + Worker actually is also Client + Server! Often the driving requirement for “Data Grid” in a “Compute Grid” Lesson: Avoid patterns with multiple SPOB! (c) Copyright 2008. Oracle Corporation
  19. 19. Increasing Resilience Increasing resilience increases latency Synchronously maintained resilience typically doubles latencies Asynchronously maintained resilience will always introduce data integrity issues Lesson: Resilience rarely has zero- latency properties Lesson: Resilience ≠ Persistence (c) Copyright 2008. Oracle Corporation
  20. 20. Partition for Parallelism Partition Data onto separate Masters to provide load-balancing and increase parallelism Not easy, especially if access patterns are dynamic and load is uneven “Joins” become very difficult, but queries work in parallel Lesson: Hot spots are inevitable Lesson: Partition failure may corrupt state. RAID is a better partitioning strategy Lesson: Avoid “registries” to locate data/services (ie: Masters) (c) Copyright 2008. Oracle Corporation
  21. 21. Summary • Avoid Single Points of Contention • Avoid moving data • Avoid Single Points of Failure • Exploit Data Affinity • Avoid Client + Server • Data + Data and Data + Compute • Avoid Master + Worker • Deploy code everywhere • It’s smaller • Active + Active better than Active • Dynamic code deployment is + Passive dangerous in transactional systems • Ensure fair utilization of resources • Exploit Parallelism • Resilience increases latency • Partition Data for Parallelism • Resilience ≠ Persistence • Hot Spots are unavoidable • Resilience = Redundancy • Pipeline architectures help significantly • RAID is a good pattern • Use Caching to reduce I/O • XML is not great • Cache Coherency is not free • Interoperability is best achieved at • Cache Coherency is essential for the binary level (hardest, but best) Data Integrity • Understand the underlying implementation of solutions! (c) Copyright 2008. Oracle Corporation
  22. 22. Achieving Scalability and High Performance means... 1. Doing something completely different architecturally... including inside the “Cloud”. 2. Avoiding patterns that limit scalability or performance 3. Ensuring each architectural component (from external) providers avoids the “limiting” patterns = knowing the internals of the provided solutions (c) Copyright 2008. Oracle Corporation
  23. 23. What about Coherence? (c) Copyright 2007. Oracle Corporation
  24. 24. Oracle Coherence • Provides… • Container-less peer-to-peer Clustering of Java Processes • Data Structures to manage Data across a Cluster / Grid • Other Stuff… • Real-Time Event Observation – Listener Pattern • Materialized Views of Data – Continuous Queries • Parallel Queries and Aggregation – Object-based Queries • Parallel Data Processing • Parallel Grid Processing • RemoteException Free Distributed Computing • Clustered JMX • MAN + WAN Connectivity
  25. 25. Oracle Coherence • Development Toolkit • Pure Java 1.4.2+ Libraries • Pure .Net 1.1 and 2.0 (Client Libraries) • No Third-Party Dependencies • No Open Source Dependencies • No Masters • No Registries • Other Libraries for… • Database and File System Integration • Top Link and Hibernate • Http Session Management, Spring, …
  26. 26. Oracle Coherence • Some uses… • Caching state in the Application-tier • Relieve load on lower-tier systems • Databases, Mainframes, Web Servers, Web Services • Reliably managing Application state in the Application-tier • Scaling out application state (in the application-tier) • In-Memory Http Session Management • Reliable and Automatically Partitioned Grid Processing • Temporary System of Record for Extreme Transaction Processing
  27. 27. Coherence Demonstration (c) Copyright 2007. Oracle Corporation
  28. 28. Pimping Oracle Coherence... (c) Copyright 2008. Oracle Corporation
  29. 29. Strategy • Business Tasks are regular Java objects (pojo) • Place Business Tasks into Coherence • Coherence dynamically distributes Tasks across the Cluster • Tasks are resilient in the Cluster • May use “affinity” to ensure related Tasks processed together • Register Backing Map Listeners in the Cluster members to execute Tasks • Scaling out Coherence = Scaling out Task Processing (c) Copyright 2008. Oracle Corporation
  30. 30. Backing Map Listener is what? • Coherence distributes, manages and stores state (objects) using “Backing Maps” • Backing Map... • Class that is responsible for managing state. • Can be replaced to change how state is managed. • Eg: in heap, off heap, hibernate, BDB, toplink, wan, file system, memory mapped files across a wan. • May be replaced, composed and customized. • Backing Map Listener... • Class that receives data events from Backing Maps (c) Copyright 2008. Oracle Corporation
  31. 31. Strategy • As Tasks enter the “Cloud” Coherence notifies BML • Our BML implementation schedules, manages, executes the Tasks (using Java 5 Executor) • Cleans up Tasks when executed • Deals with Task recovery (idempotent with status) • BML is written in standard Java • No Transactions • Fault Tolerant • Distributed + Scalable + Event Driven Architecture (c) Copyright 2008. Oracle Corporation
  32. 32. Backing Map Listener Code public class ExampleBackingMapListener extends AbstractMultiplexingBackingMapListener { public ExampleBackingMapListener(BackingMapManagerContext context) { super(context); System.out.println(quot;Created our ExampleBackingMapListenerquot;); } @Override protected void onBackingMapEvent(MapEvent mapEvent, Cause cause) { System.out.println(quot;Cause:quot; + cause + quot;, Event:quot; + mapEvent); } } (c) Copyright 2008. Oracle Corporation
  33. 33. Backing Map Listener Configuration <distributed-scheme> <scheme-name>distributed-cache-scheme</scheme-name> <backing-map-scheme> <local-scheme> <listener> <class-scheme> <class-name>ExampleBackingMapListener</class-name> </class-scheme> </listener> </local-scheme> </backing-map-scheme> </distributed-scheme> (c) Copyright 2008. Oracle Corporation
  34. 34. Results • While submitting Tasks (regular system load) • Test 1: Scale from 1 server to over 400 • No reconfiguration • Test 2: Randomly kill servers • No reconfiguration • Test 3: Kill 1, 2, 4, 8, 16, 32, 64, 128, 160 servers at once • Any data loss? • Can it be identified? • Possible 1,200,000,000 Tasks execution capacity per/day • Client may reduce current hardware by 75% (c) Copyright 2008. Oracle Corporation
  35. 35. Trading Exchange (c) Copyright 2008. Oracle Corporation
  36. 36. Trading Exchange • Similar requirements and constraints • Order processing (Foreign Exchange) • 1,000’s per second (initial) per currency pair • No manual partitioning • No transactions • 10ms max latency for full accept, validate, match, respond • Achieved with Coherence using BMLs (< 3ms) • 14 weeks development (start to go live) (c) Copyright 2008. Oracle Corporation
  37. 37. Previous Next Generation Approach (failed to meet SLA’s) (c) Copyright 2008. Oracle Corporation
  38. 38. Current Solution (c) Copyright 2008. Oracle Corporation
  39. 39. Pimp my Data Grid (c) Copyright 2008. Oracle Corporation
  40. 40. Pimp it! • Most Data Grids, especially Coherence are a fully pluggable • Coherence provides peer-to-peer JVM clustering, resilient data management with events to support distributed EDA. • You’re generally only limited by your creativity (c) Copyright 2008. Oracle Corporation
  41. 41. Pimp it – with Groovy • Instead of building object-based queries, why not use Groovy expressions? • Eg: Filters, Queries and Agents are completely customizable in Coherence • new GroovyFilter(“entry.value in [...]”); • Serious projects are looking to use Groovy across the Data Grid to provide processing agility (c) Copyright 2008. Oracle Corporation
  42. 42. Pimp it – with Spring • Instead of Spring wrapping your Data Grid, embed Spring applications in a Data Grid to; • Virtualize them • Make then resilient to failure • Scale them out • Coherence is pure Java, so it plays well with Spring • Use Coherence as clustering infrastructure for Spring – make it unstoppable ☺ (c) Copyright 2008. Oracle Corporation
  43. 43. Getting Oracle Coherence (c) Copyright 2008. Oracle Corporation
  44. 44. Oracle Coherence • Search: Search For: • http://search.oracle.com Coherence • Download • http://www.oracle.com/technology/products/coherence
  45. 45. Thanks (c) Copyright 2007. Oracle Corporation
  46. 46. Appendix (c) Copyright 2008. Oracle Corporation
  47. 47. The preceding is intended to outline general product use and direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. (c) Copyright 2008. Oracle Corporation
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×