The company that I used to work for, Travellinck (a corporate travel integration and automation tool), uses River in production.
Since 2012, all long-running / reliable processes (e.g. Travel approval, which has highly flexible rules and per-client integration requirements into corporate ERP and accounting systems, etc) has been running on a system that I led the development of. It is implemented according to the Blackboard pattern, which provides enormous flexibility.
Persistent JavaSpace provides strong reliability in the face of client and supplier outages, which happen surprisingly frequently. For example, some of our clients would literally shut their ERP systems down for backups twice a week, but urgent travel-related approvals happen 24 hours per day via various comms channels: E-mail, Mobile phone text messages, and the web.
This is still going strong.
It was an interesting journey. River and Rio are wonderful technologies, but we had our fair share of complexities with the Blackboard pattern implementation (and how to reason about the resulting business processes) and, more importantly, we had huge issues from time to time with the JavaSpace implementation itself.
We started with Persistent Outrigger, and then moved to a port of Blitz (which has been adapted to be provisioned as a Rio service). It took us a long time to figure out how to configure Blitz, and how to remove all "memory leaks" in our process - i.e. Entries that never get cleaned up over time - to achieve a stable system.
But once stable, this has been running for years with basically no maintenanceDawid Loubser
Blazegraph™ is a ultra high-performance graph database supporting Apache TinkerPop™ and RDF/SPARQL APIs. It supports up to 50 Billion edges on a single machine.
GigaSpaces provides the leading in-memory computing platform for fast data analytics and extreme transaction processing.
Sucden Financial Limited develops its own futures and options trading system called STAR, built primarily on the Java and Jini (Apache River) technologies.
The development of the system began when I joined Sucden almost ten years ago, beginning with connection to the Liffe derivatives exchange. It soon became the company’s primary trading system, and connectivity to the ICE and LME exchanges quickly followed.
With many local and remote users and ever increasing trading volumes, the typically n-tier architecture was difficult to upgrade, suffered from problems with scalability and was very susceptible to communications failures between it and the exchange host systems.
In 2006 we started a project to migrate to a service oriented architecture, specifically choosing Jini as a 100% Java solution. Jini had been around for a long time and I always thought it held great promise for our kinds of application, which needed very high throughput and fault tolerance – we (myself, Phil Harron and Hector Angel), were itching to use it for something useful. We hired IncaX consultants Phil Bishop and Nigel Warren to help us get going on the project. In 2007, Tom Hobbs and Ian Wood joined us and we began building all kinds of service management tools and infrastructure to encapsulate the complexities of Jini. A new kind of STAR was finally born early in 2009.
Jini has allowed us to move all our business logic into services, allowing for superb scalability, redundant exchange connections, and fault tolerant patterns which enable us to upgrade and perform maintenance in a live scenario. The system can monitor itself and alert support staff of problems automatically.
To visualize and manage the entire system, we built an application on the Netbeans platform where we can immediately see the interaction between services and generally monitor the health of the system as a whole. This is an ideal platform on which to present the Jini service UIs.
We are looking forward to upgrading to the Apache River code in 2011 and hope that the renewed efforts on this open source project will help to spread the word about this excellent technology far and wide."Mark Phipps Front Office Development Manager, Sucden Financial Limited.
A performant, persistent implementation of the JavaSpaces API, which is much more suitable for enterprise-grade use than the (in-memory only) reference implementation, Outrigger see here.
A re-packaging of the Blitz project to build with Maven is available here. It makes easy to provision a reliable, persistent JavaSpace with Rio.
Rio is an open source technology that provides a dynamic architecture for developing, deploying and managing distributed systems composed of services.
Rio turns a network of compute resources into a dynamic service, providing a policy based approach for fault detection and recovery, scalability and dynamic deployment. Key to the architecture are a set of dynamic capabilities and reliance on policy-based and SLA mechanisms.
Developing services for use with Rio is simple. Rio provides a non-intrusive model that removes the complexity surrounding service development and deployment.
Key features include:
- Dynamic architecture for distributed systems
- Built-in fault detection and recovery for your services
- Policy based SLA enforcement
- Support for external systems, encapsulate the control and monitoring of other frameworks
- Built-in support for Maven artifact resolution at deploy time
- Extensible service development & deployment support:
- Maven based artifact resolution
JGDMS - Java Global Discovered Micro Services¶
The github code is forked off River trunk, just before the Ivy dependency build changes and the 3.0 release was branched.
- Atomic input validation for java serialization
- IPv6 Multicast Discovery (registered with IANA)
- TLSv1.2 cyphers with perfect forward secrecy, changes to security constraints, old strong cypers from 2004 vintage now considered weak, unsafe cyphers have been removed
- New registrar methods that allow authentication prior to proxy download and delayed unmarshalling, support added to ServiceDiscoveryManager without changing public API
- Improved support for Java 9
- com.sun.jini compatibility layer (deprecated) API based on Rio's usage
- Work on Maven modular build is in progress
As soon as River community decides these improvements can be integrated back.