<Insert Picture Here> QCon: London 2009 Data Grid Design Patterns

Similar documents
<Insert Picture Here> A Brief Introduction to Live Object Pattern

Pimp My Data Grid. Brian Oliver Senior Principal Solutions Architect <Insert Picture Here>

WLS Neue Optionen braucht das Land

Craig Blitz Oracle Coherence Product Management

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 8

10. Replication. CSEP 545 Transaction Processing Philip A. Bernstein. Copyright 2003 Philip A. Bernstein. Outline

Mix n Match Async and Group Replication for Advanced Replication Setups. Pedro Gomes Software Engineer

<Insert Picture Here> Oracle Coherence & Extreme Transaction Processing (XTP)

Diplomado Certificación

Data Acquisition. The reference Big Data stack

Oracle Fusion Middleware 12c Cloud Application Foundation You Video Series

ZDLRA High Availability for Backup and Recovery

Oracle Fusion Middleware 12c

Implementing Witness service for various cluster failover scenarios Rafal Szczesniak EMC/Isilon

<Insert Picture Here> Getting Coherence: Introduction to Data Grids Jfokus Conference, 28 January 2009

Javaentwicklung in der Oracle Cloud

MySQL InnoDB Cluster. MySQL HA Made Easy! Miguel Araújo Senior Software Developer MySQL Middleware and Clients. FOSDEM 18 - February 04, 2018

State of the Dolphin Developing new Apps in MySQL 8

Introduction to Kafka (and why you care)

Broker Clusters. Cluster Models

Safe Harbor Statement

Oracle WebLogic Server 12c: JMS Administration Student Guide

10. Replication. CSEP 545 Transaction Processing Philip A. Bernstein Sameh Elnikety. Copyright 2012 Philip A. Bernstein

Oracle and Tangosol Acquisition Announcement

A Distributed System Case Study: Apache Kafka. High throughput messaging for diverse consumers

A RESTful Java Framework for Asynchronous High-Speed Ingest

High Availability through Warm-Standby Support in Sybase Replication Server A Whitepaper from Sybase, Inc.

<Insert Picture Here> Oracle NoSQL Database A Distributed Key-Value Store

Oracle Database 18c and Autonomous Database

MySQL Replication Update

<Insert Picture Here> OpenJDK - When And How To Contribute To The Java SE Reference Implementation OSCON 2011, July 26th, 2011

The Zero-Delay Data Warehouse: Mobilizing Heterogeneous Databases

Coherence & WebLogic Server integration with Coherence (Active Cache)

WebLogic JMS System Best Practices Daniel Joray Trivadis AG Bern

Transformation-free Data Pipelines by combining the Power of Apache Kafka and the Flexibility of the ESB's

VERITAS Volume Replicator. Successful Replication and Disaster Recovery

Hidden Gems in JD Edwards Orchestrator and AIS Server

Solace JMS Broker Delivers Highest Throughput for Persistent and Non-Persistent Delivery

PASS4TEST. IT Certification Guaranteed, The Easy Way! We offer free update service for one year

Open Message Queue mq.dev.java.net. Alexis Moussine-Pouchkine GlassFish Evangelist

VERITAS Volume Replicator Successful Replication and Disaster Recovery

ebay s Architectural Principles

High Available Complex Event Processing with Red Hat JBoss BRMS. Duncan Doyle Senior Architect, Red Hat

IBM WebSphere Application Server 8. Clustering Flexible Management

High Available Complex Event Processing with Red Hat JBoss BRMS. Duncan Doyle Senior Architect, Red Hat

Oracle WebLogic Server 11g: Administration Essentials

Understanding Oracle RAC ( ) Internals: The Cache Fusion Edition

What every DBA needs to know about JDBC connection pools Bridging the language barrier between DBA and Middleware Administrators

Fusion Product Hub Training Data Governance: Business Rules and Impact Analysis. July 2014

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved.

MQ High Availability and Disaster Recovery Implementation scenarios

<Insert Picture Here> WebLogic JMS Messaging Infrastructure WebLogic Server 11gR1 Labs

Oracle WebCenter Portal Performance Tuning

Introduction in Eventing in SOA Suite 11g

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into

Data Acquisition. The reference Big Data stack

9. Queued Transaction Processing

Distributed Computation Models

Oracle Autonomous Database

<Insert Picture Here> What's New for.net Developers for Oracle Database

Web Services - Concepts, Architecture and Applications Part 3: Asynchronous middleware

Oracle Zero Data Loss Recovery Appliance (ZDLRA)

Event Streams using Apache Kafka

Technical Note. Dell/EMC Solutions for Microsoft SQL Server 2005 Always On Technologies. Abstract

B. Pack -domain=c:\oracle\user_projects\domains\mydomain.jar -template=c:\oracle\userj:emplates\mydomain -template_name=nmy WebLogic Domain"

Building Highly Available and Scalable Real- Time Services with MySQL Cluster

Putting Oracle Database 11g to Work for Java. Kuassi Mensah Group Product Manager, Java Platform Group db360.blogspot.com

Low Latency Data Grids in Finance

Data-and-Compute Intensive Processing: Middle-tier or Database? Trade-Offs and Case Study. Kuassi Mensah Marcelo Ochoa Oracle

Mark Falco Oracle Coherence Development

Software Architect, Deutsche Bank

Large-Scale Patch Automation for the Cloud-Generation DBAs

status Emmanuel Cecchet

Elastic Data. Harvey Raja Principal Member Technical Staff Oracle Coherence

Oracle WebLogic Devcast Series: JMX for DevOps. Dr. Frank Munz ORACLE PRODUCT LOGO

MDM Partner Summit 2015 Oracle Enterprise Data Quality Overview & Roadmap

Connectivity FastConnect Level 200. Jamal Arif November 2018

Indirect Communication

Indirect Communication

ebay Marketplace Architecture

Red Hat JBoss Data Grid 7.1 Feature Support Document

Oracle 10g and IPv6 IPv6 Summit 11 December 2003

Introduction to MySQL InnoDB Cluster

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions

Overview. Principal Product Manager Oracle JDeveloper & Oracle ADF

02 - Distributed Systems

TopLink Grid: Scaling JPA applications with Coherence

Oracle Coherence 3.6: Share and Manage Data in Clusters

Distributed and Fault-Tolerant Execution Framework for Transaction Processing

Oracle Insurance Policy Administration

Oracle Privileged Account Manager

02 - Distributed Systems

Oracle and.net: Best Practices for Performance. Christian Shay & Alex Keh Product Managers Oracle October 28, 2015

Introduction to Messaging using JMS

Veritas NetBackup and Oracle Cloud Infrastructure Object Storage ORACLE HOW TO GUIDE FEBRUARY 2018

Oracle Application Express fast = true

Interface Certification for a Store-andforward InterAct Messaging Interface

Oracle Fusion Middleware

Oracle Utilities Meter Data Management Integration to SAP for Meter Data Unification and Synchronization

Coherence An Introduction. Shaun Smith Principal Product Manager

Transcription:

<Insert Picture Here> QCon: London 2009 Data Grid Design Patterns Brian Oliver Global Solutions Architect brian.oliver@oracle.com Oracle Coherence Oracle Fusion Middleware Product Management

Agenda Traditional Patterns The Coherence Incubator The Command Pattern The Functor Pattern The Messaging Pattern And more

The proceeding 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.

Traditional Patterns

Traditional Patterns Data Grid as a Cache Read Only (static data) Read + Write (volatile data) Cache Aside Read Through Write Through Write Behind Local Near Remote Session Management

Traditional Patterns Data Grid: it s a system of record Precondition: Data Availability, Reliability, Consistency, Coherency Observing Updates Parallel Queries Parallel Aggregation (Map Reduce) In-Place Updates (Transactions) Triggers (intercepting updates) Transformers Event Driven Architectures

The Coherence Incubator

The Coherence Incubator Repository of Projects Design Patterns, Systems Integrations, Helpful Tools Example Implementations We ve be involved in 1000 s of POCs We re cleaning and publishing generic implementations Complete Source Code & Binary Distributions Complete Documentation

The Coherence Incubator Where? Web: http://coherence.oracle.com/display/incubator/home Forum: http://forums.oracle.com/forums/forum.jsp?forumid=558 (c) Copyright 2008. Oracle Corporation

The Coherence Incubator Why? Make everyone s life easier! We ve always wanted to do provide more examples! What? (so far ) Coherence Common Command Pattern Functor Pattern Store and Forward Messaging Pattern Push Replication Pattern

The Coherence Incubator Building Blocks

The Coherence Incubator Who? Project Leads (from Oracle) Significant Community Contributions Encourage you to contribute Ideas, Feedback, Documentation, etc. Email Access to Project Leads Dedicated Oracle Forum

The Coherence Incubator Next projects? (perhaps ) Task Pattern (Execution Service) Staged Object Processing Pattern Spring Integration Platform Symphony Integration

The Command Pattern

The Command Pattern Advocates that; 1. An action to be performed zero or more times at some point in the future should be represented as an object called a Command. 2. All necessary parameters required to perform the said action, should be encapsulated as attributes with in the said Command object. 3. The Command object must provide a mechanism to perform the action (typically represented an execute method defined on the said Command object)

The Command Pattern This implementation of the Command Pattern additionally advocates that; 1. A Command may only be executed with in the scope of a target object, called a Context. 2. To execute a Command it must be submitted to a Context. 3. Once submitted, Commands are executed asynchronously. 4. Commands are executed one-at-a-time, in the order in which they arrive at their Context. 5. A Command may not return a value to the application that submitted the said Command.

The Initial Environment One Client Application Two Coherence Cache Servers All part of the same Coherence Cluster * * The Client Application may be external to the Coherence Cluster when using Coherence *Extend

Context Creation The client application creates an instance of a Context

Context Registration The client application registers the created Context using a ContextsManager * The ContextsManager places the Context into a "primary parition" of the "contexts" Distributed Cache. Coherence ensures a backup of the Context is made to a "backup partition" (on separate JVMs and different machines where possible) * Typically an instance of the DefaultContextsManager

Establishing the CommandExecutor (automatic) When a Context is registered, an internal event establishes an appropriate CommandExecutor and necessary infrastructure.

Creating a Command The client application creates an instance of a Command

Submitting a Command The client application uses a CommandSubmitter to submit a Command for execution with an identified Context * The submitted Command is placed into the "commands" Distributed Cache (and automatically backed up) The submitted Command is then automatically queued (FIFO) and scheduled for asynchronous execution by the CommandExecutor for the Context * An individual Command instance may be submitted any number of times for execution to one or more Contexts. There is no need to create new instances of the same Command if it needs to be submitted for execution multiple times.

Numerous Commands Submitted Multiple Commands may be submitted for execution at once. Commands are queued for execution (FIFO) in order of arrival at the Context

Commands are executed by the CommandExecutor (Asynchronously) When Commands are queued for execution, an internal event notifies the CommandExecutor to start executing the Commands For efficiency, the CommandExecutor may execute Commands in batches (but remaining in order). (c) Copyright 2008. Oracle Corporation

Commands Automatically Cleaned-up when Executed. Once a Command has been executed, it is removed from the "commands" cache (as is the backup of the Command).

What s the big deal? Everyone can do Command Pattern! This is distributed computing without all of the effort Embedded in your Application (Grid) No Servers to setup Highly Available Completely Monitorable (via JMX) Yours to modify/own/reuse Increases the value of an existing Data Grid

The Functor Pattern

The Store and Forward Messaging Pattern

What s the big deal? Everyone can do Messaging! This is embedded messaging in your application (Grid) No Servers to setup Highly Available Completely Monitorable (via JMX)

The Messaging Pattern Advocates that; Payload, typically represented as a Message object, may be sent to a Destination from a Sender (also commonly known as a Publisher). It is the responsibility of the infrastructure managing the Destination to ensure that Messages (arriving at the said Destination) are then stored (in some manner) and consequently forwarded (in the order in which they arrived at the said Destination) to one or more Receivers (also commonly known as Subscribers).

The Messaging Pattern The Subscribers appropriately consume (receive and acknowledge receipt) of the said Messages from the Destination in the order in which they were forwarded to the said Subscribers. The infrastructure managing the Messages appropriately clean-up (remove and garbage collect) the said Messages that have been consumed by Subscribers. The type of the Destination determines the method of delivery to the Subscribers on that Destination.

The Messaging Pattern A Topic Destination (or Topic) will store and forward Messages to all of the Subscribers of the said Topic Destination. This form of Message delivery is often called "publish-andsubscribe messaging", "one-to-many messaging" or "the observer pattern". A Queue Destination (or Queue) will store and forward Messages to at most one of the Subscribers of the said Queue Destination. For each Message a different Subscriber may be used, but this is implementation and runtime dependent. This form of Message delivery is often called "point-to-point messaging" or "one-to-one messaging".

The Messaging Pattern A Message may be Persistent or Non-Persistent. In the case of Persistent Messages, the infrastructure managing the Destination must safely store the said Messages to a persistent (and recoverable) storage device so that in the case of infrastructure failure, Messages may be recovered (not lost). A Subscriber to a Topic is either Durable or Non-Durable. Durable Subscriptions allow the system implementing the Subscriber to terminate and return without losing Messages that may have been delivered during the outage (or disconnection).

The Messaging Pattern Next Release 1. Full support for Topics and Queues 2. Support for Durable and Non-Durable Subscriptions 3. Support for Transactions (by subscribers)

The Push Replication Pattern

What s the big deal? Push Replication Pattern solves the I want this data somewhere* else problem. In the order that it was inserted/updated/deleted Managed and sent in batches With automatic failover / recovery Between multiple sites / devices In multiple directions Asynchronously With pluggable conflict resolution

Thanks