InfoQ

News

GigaSpaces 5.2: Adds support for Spring, .NET, local-views

Posted by Floyd Marinescu on Dec 28, 2006 01:26 PM

Community
.NET,
Java
Topics
Java plus .NET Integration,
Clustering & Caching,
Interop,
Grid Computing
Tags
GigaSpaces,
Jini
GigaSpaces is used heavily in finance (low latency, high volume) and provides distributed caching (in-memory data grid), messaging, and parallel processing built around an implementation of Sun's JavaSpaces. Clients can access their data using JMS, JDBC, JCache, or JavaSpaces API (also now accessible via C++/.NET). Gigaspaces sees the full use of their suite as enabling a space-based architecture, which improves over tier-based applications by breaking the applications into easily-scalable self-sufficient processing units instead of tiers.  GigaSpaces this month released version 5.2 of their suite and now brings it's capabilities to the .NET world, as well as adding support for Spring, SQL-based continuous queries and local-views, and special support for "slow consumers". InfoQ spoke to GigaSpaces CTO Nati Shalom to find out more.

On local views and SQL-based continuous queries:
Client applications, such as order books in financial firms and Microsoft Excel spreadsheets, often display only part of the data that is held in a data-grid. For performance reasons it would be much more efficient if the relevant part of the data would be kept locally near the client. A local-view is a local space that holds this information and is continuously updated to represent the current state of that view. To determine the specific part of the cluster that will be retrieved by a specific client we use SQL Query. The SQL Query is continuously matched against updates made on the data grid and is used to filter only the updates relevant to the local-view, improving bandwidth utilization.
GigaSpaces now provides Java and .NET interoperability solution for typical .NET rich client applications talking to Java backends as well as a data distribution framework for pure .NET environments. Nati mentioned that GigaSpaces is being used in pure .NET companies now. A pure .NET client will be available in Q1 2007 and currently their customers are using a .NET clients built as thin wrappers over their Java API's using JNI.  Nati explained how the .NET interoperability works:
The key of our approach to .Net support is a PONO (“Plain Old .Net Object”) abstraction, the .Net equivalent of POJOs in Java. It enables users to define, store and retrieve their C# classes, while using attributes/annotations to set indexes, replication modes, primary keys, etc. We expose the .Net abstraction with a native interface to our space-based API...To enable this level of interoperability, we introduced a serialization model referred to as PBS (Portable Binary Serialization). Among other things, it provides significant performance improvements. As a result, in a recent benchmark we conducted for a leading financial firm, our .Net and Java performance were almost identical.
GigaSpaces's has extended Spring's programming model to enable accessing data and expose/access services in the grids via custom implementations of JMSTemplate, JDBCTemplate, a JavaSpaces/GigaSpaces Template. "We also implement the declarative cache interface, enabling implicit updates of POJOs in the IMDG using aspects."

Asked about how companies typically use GigaSpaces, Nati explained two scenarios:
In Memory Data Grid  (distributed caching) - Customers uses our In-Memory-Data-Grid (IMDG) with a partitioned and replicated topology to remove the data bottleneck. The bottleneck is removed by bringing the data into memory, and if possible, into the application address space. With this approach, we’ve achieved linear scaling of up to 2 terabytes (and have not tested further than that yet). We’re seeing a very strong trend, in which customers are accepting our approach and moving all data into memory, so the capacity limits are continuously stretched (successfully). As an example, we are currently being evaluated for storing 5 terabytes of data in memory. In a majority of cases, customers use the IMDG in conjunction with existing databases, and use our new Mirror Service extensively to enable asynchronous, yet reliable, integration with external databases.

 Space-Based Architecture - In this scenario, customers use our IMDG, MessagingGrid, and Processing Grid -- as well as our SLA-driven container -- to scale out their high-performance, stateful applications. Increasingly, we’re seeing customers move towards this scenario, even if they were initially only looking into pure caching. They often realize that what they actually need is an end-to-end solution for scaling out their entire application.
Nati has been evangelizing space-based architectures quite a bit, it's main differentiating attribtutes being:
  • Data maintained in reliable memory [and often sychronized to the DB asychronously]
  • Condense messaging and data layers into ONE
  • Business logic becomes loosely-coupled services that interact and share data through the Space
  • Co-locate data, messaging, business logic
Virgin Mobile is a recent success story for GigaSpaces. In November, 2006, some key back office systems were unavailable for their GigaSpaces-based order management system. While the OMS continued running, many orders were stalled in the state of being ready for processing by the back office systems. When it was restarted, every pending order was processed.

9 comments

Reply

Data Grid by Cameron Purdy Posted Dec 29, 2006 1:29 PM
And then there were three... by Billy Newport Posted Dec 30, 2006 10:07 PM
One grid to bind them all by Jesse Kuhnert Posted Dec 31, 2006 10:07 AM
Re: One grid to bind them all by Geva Perry Posted Jan 1, 2007 11:19 PM
Re: One grid to bind them all by Geva Perry Posted Jan 2, 2007 1:20 PM
Re: One grid to bind them all by Cameron Purdy Posted Jan 2, 2007 3:15 PM
Distributed architectures by Cyril Gambis Posted Jan 2, 2007 4:47 AM
DataGrid vs GigaSpaces Space Based Architecture by Nati Shalom Posted Jan 20, 2007 2:45 PM
Implementation vs Architecture by Cameron Purdy Posted Jan 25, 2007 12:47 PM
  1. Back to top

    Data Grid

    Dec 29, 2006 1:29 PM by Cameron Purdy

    Congratulations on the release. These are certainly capabilities that any vendor would be expected to have today, and it's great to see our message being validated by other vendors.

    * Data maintained in reliable memory [and often sychronized to the DB asychronously] * Condense messaging and data layers into ONE * Business logic becomes loosely-coupled services that interact and share data through the Space * Co-locate data, messaging, business logic
    That is pretty close to the definition of a data grid. The implementation certainly is different (with Gigaspaces choosing to mount theirs on top of JINI and Javaspaces), but it's apparent that the goals are the same. Peace, Cameron Purdy Tangosol Coherence: Data Grid

  2. Back to top

    And then there were three...

    Dec 30, 2006 10:07 PM by Billy Newport

    Yep Looks like we're the three vendors here. WebSphere XD ObjectGrid does the same thing more or less. The upcoming release (V6.1) has many of these features and some that are not mentioned here with the exception that like Coherence, it's not JINI based.

  3. Back to top

    One grid to bind them all

    Dec 31, 2006 10:07 AM by Jesse Kuhnert

    Of course the article fails to point out that gigaspaces has probably had / bean working on their grid for longer than anybody. I've even used in some products about 5 or so years ago. Good stuff.

  4. Back to top

    Re: One grid to bind them all

    Jan 1, 2007 11:19 PM by Geva Perry

    Thanks, Jesse. In addition, the posts above may be misleading so I would clarify by saying that GigaSpaces goes well beyond being a simple Data Grid (although our product is an excellent implementation of one). It is a comprehensive solution for building high-performance, scalable applications (transactional or not, data-intensive and/or compute-intensive). While Data Grid (or distributed caching) products try to solve performance and scalability issues only by addressing the data bottleneck, Space-Based Architecture, as it is implemented with GigaSpaces, goes for a holistic approach:

      -- A SINGLE platform with a common cluster model and architecture for the entire application stack: data, messaging, processing coordination, etc., and co-location of these tiers on a single machine. -- Scaling-out across multiple machines (in some cases, in the thousands) -- Dynamic Management: The capability to define your C++, C# or Java business logic as plain objects and dynamically control their behavior in terms of deployment (including re-location), scaling policies, fault-detection and recovery, and dependencies on other distributed services. This is done through configuration, not programmatically.
    We achieve all this by relying on the "tuple space" model, and specifically Jini/JavaSpaces. Our customers understand that this approach is a fundamentally better one than trying to cobble together a solution based on multiple products, such as caching with JEE application servers. That's why we get quotes such as this: "We now see GigaSpaces' Space-Based Architecture as a key element in our ongoing strategy", said Julian Browne, Virgin Mobile's Head of Architecture, "The decision to move away from a traditional application server approach to the far more elegant and maintainable Spaces model was an easy one", Browne explained... link to full article To learn more about our approach, I recommend this white paper, and our company blog. Happy New Year, Geva Perry GigaSpaces http://gevaperry.typepad.com

  5. Back to top

    Distributed architectures

    Jan 2, 2007 4:47 AM by Cyril Gambis

    Clearly, distributed architectures are the future of application development. It's a very good point that when there will be a massive interest on these kind of product (which will happen for sure), there will be reliable and elegant solutions. Congratulations and keep the good work, everybody!

  6. Back to top

    Re: One grid to bind them all

    Jan 2, 2007 1:20 PM by Geva Perry

    I noticed that the links in my post above don't work for some reason, so here they are again: Virgin Mobile story: http://www.gigaspaces.com/News/news2006_12_18.htm Space-Based Architecture white paper: http://www.gigaspaces.com/os_papers.html#a1 GigaSpaces blog: http://www.gigaspacesblog.com GigaSpaces web site: http://www.gigaspaces.com. Thanks, Geva

  7. Back to top

    Re: One grid to bind them all

    Jan 2, 2007 3:15 PM by Cameron Purdy

    -- A SINGLE platform with a common cluster model and architecture for the entire application stack: data, messaging, processing coordination, etc., and co-location of these tiers on a single machine. -- Scaling-out across multiple machines (in some cases, in the thousands) -- Dynamic Management: The capability to define your C++, C# or Java business logic as plain objects and dynamically control their behavior in terms of deployment (including re-location), scaling policies, fault-detection and recovery, and dependencies on other distributed services. This is done through configuration, not programmatically.
    Yes, that is a data grid. Peace, Cameron Purdy Tangosol Coherence: Data Grid

  8. Back to top

    DataGrid vs GigaSpaces Space Based Architecture

    Jan 20, 2007 2:45 PM by Nati Shalom

    For those that are confused with the definition of DataGrid i've posted a new blog entry that outlines the difference between DataGrid and Space Based Architecture. It include real-life example and table the summarizes the differences between the two. I welcome any thoughts comments on that topic. HTH Nati S Write Once Scale Anywhere http://www.gigaspacesblog.com

  9. Back to top

    Implementation vs Architecture

    Jan 25, 2007 12:47 PM by Cameron Purdy

    For those that are confused with the definition of DataGrid i've posted a new blog entry that outlines the difference between DataGrid and Space Based Architecture. It include real-life example and table the summarizes the differences between the two.
    An architecture is just that -- an architecture. A grid, on the other hand, is an actual managed, provisionable, deployment platform. Our customers (which now number in the _thousands_ of real life examples ;-) deploy many different types of architectures, including "space based architectures", onto their Coherence data grids. I would posit that your understanding of data grids is no different from your understanding of distributed caching. In the case of Tangosol Coherence, we provide an extremely successful implementation of both, and I'd be happy to illustrate how they work -- and especially how they work extremely well together. Peace, Cameron Purdy Tangosol Coherence: The Java Data Grid

Exclusive Content

VMware Infrastructure 3 Book Excerpt and Author Interview

VMware Infrastructure 3: Advanced Technical Design Guide and Advanced Operations Guide provides a wealth of practical insights into setting up virtualization in todays corporate environments.

Architectures of extraordinarily large, self-sustaining systems

Can a system that is so large it cannot be comprehended be "designed" in a conventional sense? The foundations of computing are about to change. In this talk, Richard P. Gabriel explores why and how.

Using Ruby Fibers for Async I/O: NeverBlock and Revactor

Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.

Agile and Beyond - The Power of Aspirational Teams

Tim Mackinnon talks about the aspirations behind the Agile principles and practices, the desire to become efficient, to write quality code which does not end up being thrown away.

Concurrency: Past and Present

Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.

ActionScript 3 for Java Programmers

Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.

Neal Ford On Programming Languages and Platforms

Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.

Future Directions for Agile

David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.