The list of foundations hosted by the Linux Foundation continues growing this week with the launch of the Reactive Foundation, “a community of leaders established to accelerate technologies for building the next generation of networked applications,” according to a statement. Upon founding, those leaders will include Alibaba, Facebook, Netifi and Pivotal, with the open source RSocket specification and programming language implementations also joining the new foundation’s “formal open governance model and neutral ecosystem.”
RSocket provides a basis for reactive programming at the protocol level and lays the groundwork for reactive programming in cloud native environments, Ryland Degnan, co-founder and CTO at Netifi, said in an interview with The New Stack. It’s considered a replacement for HTTP in cloud native communications.
“With the whole cloud native movement, a lot more people are building software for the cloud that operates on a scale that’s an order of magnitude higher than anything we’ve seen before. It’s got a lot of moving parts and rationalizing how all those parts communicate is an incredibly important problem,” Degnan said. “The present problem that RSocket is seeking to solve is defining a standardized way for services to communicate that was built from the ground up and not using last year’s technology.”
“The de facto standard right now when people go out and build stuff is to use HTTP. That comes with loads of problems because it was really designed to be a request-response protocol,” Degnan said. “It has very little that was built for microservices. It was really built for this previous generation of requesting a resource from a monolithic server and returning a response. RSocket has been designed from the ground up for cloud native communication.”
HTTP vs. RSocket
Originally created by Netflix, RSocket is an application protocol for Reactive Streams that provides application flow control over the network to prevent outages and increase resiliency. As opposed to HTTP, RSocket does not await a response or request from the client. Degnan explains this core difference between HTTP and RSocket.
“A lot of effort spent in building these distributed systems ends up being workarounds for problems with HTTP. Circuit breakers are a great example of that. It’s working around the problem that HTTP doesn’t have flow control built into it, which means that you have to guess whether the downstream service is available or not, to not cause it to receive too many requests,” said Degnan. “You need to cut off traffic to it if you think that it’s now unavailable, but that involves a lot of configurations. RSocket could remove that problem entirely.”
By contrast, RSocket employs the idea of asynchronous stream processing with non-blocking back-pressure, in which a failing component will, rather than simply dropping traffic, communicate its stress to upstream components, getting them to reduce the load and allowing the system to “gracefully respond to load rather than collapse under it,” according to the Reactive Manifesto glossary. Degnan further explained how this applied to the modern world of microservices.
“Reactive streams are designed to have vendors and receivers of information that are decoupled from each other. Rather than having the receiver control the flow of information, it’s allowed the sender to asynchronously send data that’s really important,” said Degnan. “In microservices for example, where you have a lot of independent components that need to communicate, what often happens is some services are able to operate at a higher speed than others, or traffic spikes overwhelm parts of the system. Reactive Streams allows you to have receivers say, ‘all right, now I’m ready to receive five more requests’ and then have that message be asked around the system and the flow of information to be regulated.”
While the donation of RSocket to the Reactive Foundation lays the groundwork, a spokesperson for the foundation explained that it will also “work to expand the existing set of language implementations/integrations, create a test platform to ensure interoperability between different protocol implementations, host a repository of documentation about reactive systems/programming in general as well as specific projects like RSocket.”
The Linux Foundation is a sponsor of The New Stack.