Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
David Whitmarsh | Shadowmist Ltd
Case Study – An Oracle
Coherence Data Grid in
OSGi Containers
Background
• Investment bank client
• Post-trade Services
• Several distinct application services layered on a
set of comm...
Oracle Coherence
• Clustered in-memory data cache
• API extends java.util.Map
• Redundant storage of data – safe against n...
Hardware Topology
• Each node runs in a
container
• All nodes communicate
with all others by multicast
• Data nodes have 8...
Application Structure
Data Model Hierarchies
Conventional Coherence
Classpath Structure
• Stored object and serialisation classes normally
on classpath – accessible fr...
Object Models as OSGi Services
• All touch points where Coherence needs to be aware of
a data object can be intercepted an...
Data Node Deployment
• On data nodes, coherence must still have access to
serialisation and cache configuration
POF Evolvable and code
releases
• POF supports an “Evolvable” model for
converting objects between old and new
versions bo...
The Hard Bits - Coherence
• Coherence cache instances traditionally obtained via static
factory methods from a single glob...
The Hard Bits - OSGi
• Managing one container per grid node
• Development tooling
– Eclipse? Maven? Bundlor? Bnd? Spring D...
Upcoming SlideShare
Loading in …5
×

OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Study Using OSGi and Oracle Coherence

1,277 views

Published on

OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Study Using OSGi and Oracle Coherence (David Whitmarsh

Published in: Technology
  • Be the first to comment

  • Be the first to like this

OSGi Community Event 2010 - Modular Applications on a Data Grid - A Case Study Using OSGi and Oracle Coherence

  1. 1. David Whitmarsh | Shadowmist Ltd Case Study – An Oracle Coherence Data Grid in OSGi Containers
  2. 2. Background • Investment bank client • Post-trade Services • Several distinct application services layered on a set of common data services • High Volumes (up to 3m events/day) • Low Latency
  3. 3. Oracle Coherence • Clustered in-memory data cache • API extends java.util.Map • Redundant storage of data – safe against node or machine outage • Primary data store in this application – not 2nd level cache • Internal use of “Portable Object Format” - POF
  4. 4. Hardware Topology • Each node runs in a container • All nodes communicate with all others by multicast • Data nodes have 8Gb heaps • Application and Proxy nodes are full grid members but with local storage of data disabled
  5. 5. Application Structure
  6. 6. Data Model Hierarchies
  7. 7. Conventional Coherence Classpath Structure • Stored object and serialisation classes normally on classpath – accessible from Coherence code • Support for specifying ClassLoader – used in JEE, could be used in OSGi
  8. 8. Object Models as OSGi Services • All touch points where Coherence needs to be aware of a data object can be intercepted and delegated to OSGi services. • Cache configurations can be provided to Coherence via an OSGi service.
  9. 9. Data Node Deployment • On data nodes, coherence must still have access to serialisation and cache configuration
  10. 10. POF Evolvable and code releases • POF supports an “Evolvable” model for converting objects between old and new versions both ways without data loss. • Coherence “rolling upgrade” may take considerable time for a large grid • Serialisation via OSGi allows upgrade in- place with no node restarts.
  11. 11. The Hard Bits - Coherence • Coherence cache instances traditionally obtained via static factory methods from a single global configuration. – NamedCache cache = CacheFactory.getCache(cacheName); • Static access methods used internally in some places – Proxy service – Messaging pattern
  12. 12. The Hard Bits - OSGi • Managing one container per grid node • Development tooling – Eclipse? Maven? Bundlor? Bnd? Spring DM tools? • Version dependencies • Embedding Jars within bundles • Anomalously long startup time for DM server under Eclipse on Windows • Incomplete cleaning of state on restart • Controlled shutdown – order of service removal • Logging

×