Real Terracotta

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Real Terracotta - Presentation Transcript

    1. REAL TERRACOTTA Real-world scalability patterns with Terracotta SERGIO BOSSA Pro-Netics / Sourcesense Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    2. About Me Software architect and engineer ✔ http://www.pronetics.it ➔ http://www.sourcesense.com ➔ Blogger ✔ http://sbtourist.blogspot.com ➔ Open Source Enthusiast ✔ ➔ Lead at Scarlet - Clustering for Jira http://scarlet.sf.net ➔ Committer at Spring Modules ➔ http://springmodules.dev.java.net ➔ Committer at Terracotta Forge ➔ http://forge.terracotta.org ➔ Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    3. Agenda Do I need a cluster? ✔ Terracotta concepts. ✔ Scalability patterns with Terracotta. ✔ Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    4. Do I need a cluster? The old, dummy, question: ✔ ➔ Do I need a clustered architecture? The correct one: ✔ ➔ Do I need scalability? ➔ Do I need availability? ➔ Nowadays, the answer is: yes, you need. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    5. Why should I need a cluster? Several changes in the social and market landscape ... ✔ In a few words: ✔ ➔ More and more users surfing the web. ➔ More and more hardware at cheaper price. ➔ More and more processors ... even on a single machine. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    6. What should I use for my cluster? Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    7. The Terracotta Revolution Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    8. The Terracotta Revolution Transparent clustering. ✔ ➔ Everything happens under the hood. Easy to work with. ✔ ➔ If you know Java, you can cluster your application with no-to-minimal code changes. ➔ Deep integration with common frameworks and patterns. Optimized for performance. ✔ ➔ No cross-node communication. ➔ Built on the concept of diff. Open Source. ✔ ➔ With a great community. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    9. Terracotta Technology Overview Network Attached Memory ✔ ➔ All cluster nodes share part of their memory heap: a shared object graph starting from one or more roots. ➔ Shared objects changes are propagated at the byte level: only the different bytes get propagated! ➔ Shared objects changes are delimited by lock-guarded transactions. ➔ Shared objects are backed by the cluster server filesystem. ➔ With preserved Java semantics (i.e. object identity)! Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    10. Terracotta Technology Overview Hub-and-Spoke network architecture ✔ ➔ A central cluster server with one or more cluster client nodes. ➔ Clients talk only with the server. ➔ Server can be put in active-passive mode (no SPOF). ➔ For enterprise customers only: server can be put in active-active mode (no SPOB). Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    11. Terracotta Technology Details Bytecode instrumentation ✔ ➔ Instrument classes in order to: ➔ Share classes among cluster nodes. ➔ Intercept and propagate changes. ➔ Apply transactions. ➔ Distribute method invocations. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    12. Terracotta Technology Details Roots ✔ ➔ AKA super-static: created only for the first time, and then shared among all cluster nodes. ➔ Start of the shared object graph: all objects reachable from roots are shared among all cluster nodes. ➔ Except transient ones. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    13. Terracotta Technology Details Locks ✔ ➔ Every read or write operation on a shared object state must be guarded by locks. ➔ Synchronized blocks. ➔ java.util.concurrent.locks.ReentrantReadWriteLock ➔ Acting as a transaction boundary. ➔ Acting as a change propagation boundary. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    14. Terracotta Technology Details Distributed Method Invocation ✔ ➔ Methods called on a shared object from a cluster node, are automatically fired on the same object instance of all other cluster nodes. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    15. Terracotta Technology Details Declarative configuration: ✔ ➔ XML file. ➔ Java annotations. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    16. Terracotta Quick Start Plan Identify roots and related shared object graphs. ✔ Identify transactional methods. ✔ Identify classes that need to be instrumented. ✔ Identify distributed methods (optional). ✔ Choose your cluster deployment configuration: ✔ ➔ How many client nodes? ➔ How many server nodes? ➔ How much memory? ➔ ... Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    17. Terracotta Quick Start Operate Configure the cluster. ✔ Start the Terracotta cluster server: ✔ sh tc_home/bin/start-tc-server.sh -f path/to/tc-conf.xml Start the Terracotta cluster client(s): ✔ TC_INSTALL_DIR=... TC_CONFIG_PATH=... . $TC_INSTALL_DIR/bin/dso-env.sh -q export JAVA_OPTS=${TC_JAVA_OPTS} java ... Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    18. What about real world scalability? Feeling like lost at sea? Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    19. Scalability in the real world We need some patterns! Cache your data in a distributed fashion. ✔ Partition your cached data and collocate with your ✔ processing. Asynchronously write-behind to your back-end. ✔ Asynchronously de-couple components communication. ✔ Asynchronously de-couple components processing. ✔ Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    20. Data-affinity caching Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    21. Data-affinity caching In a nutshell Key concepts: ✔ ➔ Use a partition function for grouping related entries on the same distributed cache instance. ➔ Use the partition function to look up the cache instance and put/get related entries. ➔ Process the cached data on the same node it belongs to. Key features: ✔ ➔ No network traffic between cache instances. ➔ Distributed load. ➔ Higher scalability. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    22. Data-affinity caching With Terracotta Use: ✔ ➔ Tim-Tree-Map-Cache http://forge.terracotta.org/releases/projects/tim-tree-map-cache/ ➔ Key classes: ✔ org.tc.cache.CacheFactory ➔ org.tc.cache.ITerracottaCache ➔ Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    23. Asynchronous write-behind Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    24. Asynchronous write-behind In a nutshell Key concepts: ✔ ➔ Always write and read from your (distributed) cache. ➔ Asynchronously schedule writes to the storage. Key features: ✔ ➔ Higher throughput. ➔ Load throttling. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    25. Asynchronous write-behind With Terracotta Use: ✔ ➔ Tim-Async http://forge.terracotta.org/releases/projects/tim-async/ ➔ Key classes: ✔ org.terracotta.modules.async.AsyncCoordinator ➔ org.terracotta.modules.async.ItemProcessor ➔ Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    26. Asynchronous messaging Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    27. Asynchronous messaging In a nutshell Key concepts: ✔ ➔ Connects application components through pipes. ➔ Configure processing filters to elaborate messages and make them flow through pipes. Key features: ✔ ➔ De-coupled application components. ➔ Higher reliability. ➔ Higher scalability. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    28. Asynchronous messaging With Terracotta Use: ✔ ➔ Tim-Pipes http://forge.terracotta.org/releases/projects/tim-messaging/ ➔ Key classes: ✔ org.terracotta.message.topology.TopologyManager ➔ org.terracotta.message.topology.Topology ➔ org.terracotta.message.routing.Router ➔ org.terracotta.message.pipe.Pipe ➔ org.terracotta.message.pipe.PipeProcessor ➔ org.terracotta.message.subscriber.Subscriber ➔ org.terracotta.message.subscriber.SubscriberProcessor ➔ Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    29. Asynchronous processing Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    30. Asynchronous processing In a nutshell Key concepts: ✔ ➔ Create a set of tasks. ➔ Submit tasks to a master. ➔ Tasks will be executed by workers. ➔ Eventually wait for tasks to be completed. Key features: ✔ ➔ De-coupled execution of expensive tasks. ➔ Parallel execution of tasks. ➔ Customisable routing logic. ➔ Load distribution. Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    31. Asynchronous processing With Terracotta Use: ✔ ➔ Tim-MasterWorker http://forge.terracotta.org/releases/projects/tim-messaging/ ➔ Key classes: ✔ org.terracotta.executor.DistributedExecutorService ➔ org.terracotta.executor.DistributedCompletionService ➔ org.terracotta.workmanager.statik.StaticWorkManager ➔ org.terracotta.workmanager.statik.StaticWorker ➔ org.terracotta.workmanager.dynamic.DynamicWorkManager ➔ org.terracotta.workmanager.dynamic.DynamicWorker ➔ Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    32. Conclusion Enjoy scalability challenges! Design your scalable architecture ... ✔ Program in plain old Java ... ✔ Run with Terracotta! ✔ Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009
    33. Q&A Sergio Bossa - sergio.bossa@pronetics.it - Pro-Netics / Sourcesense Javaday Roma III Edizione – 24 gennaio 2009

    + sbtouristsbtourist, 9 months ago

    custom

    1669 views, 1 favs, 1 embeds more stats

    Real-world scalability patterns with Terracotta: en more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1669
      • 1352 on SlideShare
      • 317 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 51
    Most viewed embeds
    • 317 views on http://sbtourist.blogspot.com

    more

    All embeds
    • 317 views on http://sbtourist.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories