我正在研究为什么某些系统在TCP提供本地流量控制的情况下实现应用程序级的后压。
我尤其是在阅读akka-streams和(更高级别的讨论(反应流。
是否只是为了从网络和TCP协议中抽象出异步通信的想法?
其他更精确的问题:
-
如果应用程序(例如Akka-streams应用程序(最终通过TCP进行通信,它会落到TCP的本机回压吗?
-
反应流可以通过简单地将TCP处理?
在TCP顶部实现应用程序级的后压吗?
任何帮助和指针都将不胜感激!谢谢:(
我认为您的问题的基本假设是TCP是流管线中唯一的外部通信。
假设您的流在几个IO频道上进行通信,例如文件IO,数据库查询和控制台的标准输出:
//Read Data from File --> DB Query --> TCP Server Query --> Slow Function --> Console
通过整个管道,Akka-stream实现将提供异步,后压的。因此 您是正确的,即Akka的流程道的 ...通过使用akka流,您不必手动做出反应 反向压力信号,因为图书馆为您透明地做。TCP Server
部分的实现依赖于TCP的"本机背压"。从文档中: