We have to maximize locality of reference and minimize contention to make systems scale, Jonas Bonér, creator of the Akka project, stated in a recent presentation about scalability in reactive systems. By using a share nothing architecture, build on an event-driven foundation and adhering to core principles that have been proven to work for ages we can write really scalable systems.
Typesafe has announced the early preview of Akka Streams, an open source implementation of the Reactive Streams draft specification using an Actor-based implementation. Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure on the JVM. Back pressure in needed to make sure the data producer doesn't overwhelm the data consumer.
We should build systems more loosely coupled to achieve properties like robustness, resilience and scalability, Udi Dahan emphasizes in a recent presentation discussing how we can model our systems using more event-driven and asynchronous patterns and some of the challenges developers face when introducing these principles and patterns into development.
The New York Times R&D Lab has released streamtools, a general purpose, graphical tool for dealing with streams of data, under Apache 2 license.
There are both commonalities and some differences when comparing architectural principles and coding styles in Akka Actors and Java EE 7 Enterprise JavaBeans, specifically stateless session beans and JMS message-driven beans, Dr Gerald Loeffler concludes in a recent introductory talk when explaining and comparing the three approaches from a high-level concurrency view.
Version 2.1 of CQRS framework Axon supports annotations and ordering of event handlers, a new conflict resolution together with performance improvements. The recently released version also adds compatibility with OSGi.
Complex Event Processing, CEP, can be very useful for problems that have to do with time e.g. querying over historical data when you want to correlate things that have happened at different times, Greg Young explained in a recent presentation.
Vaughn Vernon, author of Implementing Domain-Driven Design, recently talked about using Scala and the Actor Model implementation Akka together with Doman-Driven Design as a means to remove some of the architecture overhead typically found in event-driven or hexagonal architectures.
This week, Pivotal released version 1.0 of its project Reactor for general availability. Reactor provides low-level abstractions for an event-driven, reactive programming model, and is a component member of the Spring IO Platform in its "IO Foundation" layer.
Russ Miles recently shared some thoughts and ideas about the needs for adaptability in a system and how his implementation of the Hexagonal Architecture can help in achieving this. He used a Java and Spring based application to exemplify how such a system can be implemented.
Version 2.0 of the Event Store, (an Event Source based persistence engine), was released last week with support for security, allowing for lock down of the Event Store and setting up Access Control Lists on event streams. The Projections library is now in beta and more documentation has been added.
Version 4.0 of NServiceBus, a service bus for .NET, has just been released with support for RabbitMQ and ActiveMQ in addition to MSMQ. Support for using database tables as queues has also been added, and performance for the MSMQ transport has been significantly improved. According to Udi Dahan, the founder of NServiceBus, this is the biggest release ever.
Not all systems are based on events or facts. In some problem spaces events make complete sense; they are about facts that are happening over periods of time. But a lot of systems are instead focused on information that flow through a process, Greg Young explained at DDD Exchange Day in London last week, using handling of a mortgage application inside a bank as an example.
Last week Yahoo! announced the open source release of Storm on Hadoop cluster. This implementation enables Storm applications to utilize the computational resources of a Hadoop cluster along with accessing Hadoop’ storage resources such as HBase and HDFS.
To take advantage of the great concurrency opportunities the new multi-core machines gives us we should use a programming model that helps us achieve this, and the Actor model gives us a number of tools for doing that, Vaughn Vernon stated at this year’s DDD Exchange Day in London.