title: Ways to maintain back pressure in Akka Streams involving multiple JVMs
body: <p>I'm aware that as of Akka 2.4.16, there is no "remote" implementation of Reactive Streams. The specification focuses on a stream running on a single JVM.</p>
  
  <p>However, considering the use case to involve another JVM for some processing while maintaining back pressure. The idea is to have a main application that provides a user interface running a stream. For instance, this stream has a stage performing some heavy computations that should run on a different machine. I'm interested in ways to run streams in a distributed way - I came across some articles pointing out some ideas:</p>
  
  <ul>
  <li>Connecting streams via TCP using Akka HTTP (<a href="https://stackoverflow.com/questions/28901599/how-do-i-subscribe-to-a-reactive-streams-implementation-running-on-a-different-j">Stackoverflow</a>)</li>
  <li>Simplifying it with Artery to a certain extent (<a href="https://stackoverflow.com/questions/31387463/akka-stream-actorsubscriber-does-not-work-with-remote-actors">Stackoverflow</a>, <a href="http://blog.akka.io/artery/2016/12/02/streams-in-artery" rel="nofollow noreferrer">Akka Blog</a>)</li>
  <li>Integrating actors into a stream (<a href="http://grokbase.com/t/gg/akka-user/15497ftc1f/2-way-communication-between-akka-streams-and-remote-actors" rel="nofollow noreferrer">Answer from Viktor Klang</a>, <a href="http://doc.akka.io/docs/akka/2.4.16/scala/stream/stream-integrations.html#mapAsync_+_ask" rel="nofollow noreferrer">Akka Docs</a>)</li>
  </ul>
  
  <p>What other alternatives are there? Are there any significant downsides to the above? Any special characteristics to consider?</p>
  
  <p>Update: This question is not limited to a single use case. I'm generally interested in all possible ways to work with streams in a distributed environment. That means, e.g. it can involve only one stream that integrates actors with <code>.mapAsync</code> or e.g. there could be two separate streams on two machines communicating via Akka HTTP. The only requirement is that back pressure has to be enforced among all components.</p>