Wednesday, June 02, 2010

Coherence in Oracle Fusion Middleware 11g: useful tips & links

Since the release of Oracle Fusion Middleware 11g the integration of Coherence in the Fusion Middleware has increased drastically with every PatchSet release. Currently in FMW 11g PS2 Coherence is used for:

  • Cluster Deployment

  • Weblogic ActiveCache/Coherence*Web integration

  • OSB ResultCache

This posting will contain useful pointers to documentation section that can help you with managing and using Coherence in FMW 11g...the list is not complete but a first attempt to bundle the links I have used before and which were/are very helpful for me.
Coherence Network and performance tuning

  • Configuration tips fo local laptop configuration - Thanks Marc;

  • use the tangosol.coherence.ttl (time-to-live) to prevent network traffic to different hosts - useful when working locally on laptops.

  • use the tangosol.coherence.localhost to force Coherence to bind to a specific address

  • use the tangosol.coherence.wka to force unicast cluster communication. Determine the wka addresses and the number of wka addresses carefully to avoid loss of service in case the wka nodes die.

  • for the OSB the coherence cache and cluster configuration files can be found in /config/osb/coherence
  • and can be changed accordingly.
  • When encountering Coherence socket buffer warnings in the log files it is useful to increase the socket buffer size of your OS. Please have a look here to find the settings per OS

  • Coherence performance tuning

  • In my opinion it is wise not to use the Managed server JVM for cache storage in case your cache will grow to a significant size. Configure the Managed Server JVM with local-storage false and off-load storage to other cache-servers in the Coherence cluster running in separate JVMs

Active Cache - Coherence*Web

I will update this post when I have more useful information that can be shared. In case of Coherence related questions feel free to send me an email.

Sunday, May 30, 2010

Book review: Oracle Coherence 3.5: Create internet scale applications using Oracle's high-performance data grid

The IT book publisher PackT asked me, based on my blog activities here, a couple of weeks ago if I was willing to review the newly published book Coherence 3.5. Being a person who works with Coherence, follows the developments around Coherence and believes in the capabilities of Oracle Coherence for building reliable scalable architectures, I was definitely willing to review this book and to bundle my feedback in a blog posting afterwards.

The book starts with an overview of what scalability, performance and high availability means and (also important) what not, what it does involve, how you achieve it and how Coherence fits into this picture. After explaining the basic concepts of performance, scalability and availability the book proceeds with explaining how easy it is to start off with Oracle Coherence to build your first 'Hello World' Coherence application.

After this overviev the book starts with the 'real stuff'. First a detailed overview is given about the different type of caching topologies and the options Coherence provide to decide for the right caching strategy. The book also provides so called 'When to use it?' chapter per topology in which it explains for which typical applications the topolgy is applicable and should be used; very useful. The following chapter explains how you can define your domain objects and make them Coherence-aware. In this chapter it uses the concepts of Domain Driven Design as the basis to construct the domain model for a sample applications. For me personally, this chapter was an eye-opener regarding building domain models for Coherence. One thing you should keep in mind, which i had learned before, when you start using Coherence is that you should keep things very simple and don't treat Coherence as an in-memory relational database. only put those things in Coherence grid which should be in the cache and avoid to think like you're going to build a database relation model. For example, store whole aggregates (Order, order items) in a single cache entry for the sake of atomicity, consistency and simplicity. The chapter also provides information about efficient object serialization using Coherence Portable Object Format (POF) and object change managements using evolvable objects.

The book continues with covering the following topics that makes the book a complete Coherence
reference :

  • Querying the Grid

  • Entry processing

  • Event processing

  • Persistency

  • Coherence*Extend

  • C++ and .Net interoperability

My final conclusion about this book is that is an excellent book to start off with in order to make yourself familiar with implementing Coherence applications. The book is complete in terms of
'should-know' features and contains useful guidelines and best-practices.

The book can be ordered from here:
- PackT site
- Amazon site