All Projects → reactivemanifesto → Reactivemanifesto

reactivemanifesto / Reactivemanifesto

Licence: other
The Reactive Manifesto

Projects that are alternatives of or similar to Reactivemanifesto

reacted
Actor based reactive java framework for microservices in local and distributed environment
Stars: ✭ 17 (-96.86%)
Mutual labels:  distributed-systems, reactive, scalability, reactive-programming
Cloudi
A Cloud at the lowest level!
Stars: ✭ 352 (-35.06%)
Mutual labels:  reactive, scalability, distributed-systems
Firefly
Firefly is an asynchronous web framework for rapid development of high-performance web application.
Stars: ✭ 277 (-48.89%)
Mutual labels:  reactive, asynchronous, reactive-programming
Rocket.jl
Functional reactive programming extensions library for Julia
Stars: ✭ 69 (-87.27%)
Mutual labels:  reactive, asynchronous, reactive-programming
Orleans
Orleans is a cross-platform framework for building distributed applications with .NET
Stars: ✭ 8,131 (+1400.18%)
Mutual labels:  reactive, scalability, distributed-systems
Vertx In Action
Examples for the Manning "Vert.x in Action" book
Stars: ✭ 134 (-75.28%)
Mutual labels:  reactive, scalability, distributed-systems
Motion
Reactive frontend UI components for Rails in pure Ruby
Stars: ✭ 498 (-8.12%)
Mutual labels:  reactive, reactive-programming
Awesome Distributed Deep Learning
A curated list of awesome Distributed Deep Learning resources.
Stars: ✭ 277 (-48.89%)
Mutual labels:  asynchronous, distributed-systems
Entwine
Testing tools and utilities for Apple's Combine framework.
Stars: ✭ 306 (-43.54%)
Mutual labels:  reactive, reactive-programming
Reactive Practice At Taobao
♨️ Reactive @ 淘宝 | Reactive实践、推动、落地的记录与大会分享 | Flow Arch(流式架构)/Reactive Programming(RP/反应式编程)
Stars: ✭ 314 (-42.07%)
Mutual labels:  reactive, reactive-programming
ring-election
A node js library with a distributed leader/follower algorithm ready to be used
Stars: ✭ 92 (-83.03%)
Mutual labels:  distributed-systems, scalability
Awesome Rxjs
A collection of awesome RxJS resources
Stars: ✭ 314 (-42.07%)
Mutual labels:  reactive, reactive-programming
Rxswift
RxSwift를 스터디하는 공간
Stars: ✭ 335 (-38.19%)
Mutual labels:  asynchronous, reactive-programming
futura
Asynchronous Swift made easy. The project was made by Miquido. https://www.miquido.com/
Stars: ✭ 34 (-93.73%)
Mutual labels:  reactive, asynchronous
Toy Rx
A tiny implementation of RxJS that actually works, for learning
Stars: ✭ 290 (-46.49%)
Mutual labels:  reactive, reactive-programming
RxJava-Codelab
Codelab project for demonstration of RxJava features
Stars: ✭ 44 (-91.88%)
Mutual labels:  reactive, reactive-programming
Vueflux
♻️ Unidirectional State Management Architecture for Swift - Inspired by Vuex and Flux
Stars: ✭ 315 (-41.88%)
Mutual labels:  reactive, reactive-programming
Reactor Core
Non-Blocking Reactive Foundation for the JVM
Stars: ✭ 3,891 (+617.9%)
Mutual labels:  reactive, asynchronous
Rxjava2 Jdbc
RxJava2 integration with JDBC including Non-blocking Connection Pools
Stars: ✭ 360 (-33.58%)
Mutual labels:  reactive, reactive-programming
Cloe
Cloe programming language
Stars: ✭ 398 (-26.57%)
Mutual labels:  reactive, asynchronous

The Reactive Manifesto

Organisations working in disparate domains are independently discovering patterns for building software that look the same. These systems are more robust, more resilient, more flexible and better positioned to meet modern demands.

These changes are happening because application requirements have changed dramatically in recent years. Only a few years ago a large application had tens of servers, seconds of response time, hours of offline maintenance and gigabytes of data. Today applications are deployed on everything from mobile devices to cloud-based clusters running thousands of multi-core processors. Users expect millisecond response times and 100% uptime. Data is measured in petabytes. Today's demands are simply not met by yesterday’s software architectures.

We believe that a coherent approach to systems architecture is needed, and we believe that all necessary aspects are already recognised individually: we want systems that are Responsive, Resilient, Elastic and Message Driven. We call these Reactive Systems.

Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.

Reactive Systems are:

  • Responsive: The system responds in a timely manner if at all possible. Responsiveness is the cornerstone of usability and utility, but more than that, responsiveness means that problems may be detected quickly and dealt with effectively. Responsive systems focus on providing rapid and consistent response times, establishing reliable upper bounds so they deliver a consistent quality of service. This consistent behaviour in turn simplifies error handling, builds end user confidence, and encourages further interaction.
  • Resilient: The system stays responsive in the face of failure. This applies not only to highly available, mission-critical systems — any system that is not resilient will be unresponsive after a failure. Resilience is achieved by replication, containment, isolation and delegation. Failures are contained within each component, isolating components from each other and thereby ensuring that parts of the system can fail and recover without compromising the system as a whole. Recovery of each component is delegated to another (external) component and high availability is ensured by replication where necessary. The client of a component is not burdened with handling its failures.
  • Elastic: The system stays responsive under varying workload. Reactive Systems can react to changes in the input rate by increasing or decreasing the resources allocated to service these inputs. This implies designs that have no contention points or central bottlenecks, resulting in the ability to shard or replicate components and distribute inputs among them. Reactive Systems support predictive, as well as Reactive, scaling algorithms by providing relevant live performance measures. They achieve elasticity in a cost-effective way on commodity hardware and software platforms.
  • Message Driven: Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation, and location transparency. This boundary also provides the means to delegate failures as messages. Employing explicit message-passing enables load management, elasticity, and flow control by shaping and monitoring the message queues in the system and applying back-pressure when necessary. Location-transparent messaging as a means of communication makes it possible for the management of failure to work with the same constructs and semantics across a cluster or within a single host. Non-blocking communication allows recipients to only consume resources while active, leading to less system overhead.

Large systems are composed of smaller ones and therefore depend on the Reactive properties of their constituents. This means that Reactive Systems apply design principles so these properties apply at all levels of scale, making them composable. The largest systems in the world rely upon architectures based on these properties and serve the needs of billions of people daily. It is time to apply these design principles consciously from the start instead of rediscovering them each time.

Sign the manifesto

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].