我认为划分Apache Thrift的传输层的原因是因为低级传输仅使用/包装了一些基本的Java函数(如套接字)。传输包装器仅使用zlib-transport或framed-transport准备数据,并使用其他传输方式将其发送到网络。但是HttpClient还是一个传输包装,并且没有使用其他传输进行发送。
那么Apache Thrift将传输层划分为低层传输和传输包装的原因是什么?
答案 0 :(得分:1)
近年来,“分层运输”和“端点运输”这两个术语已被创造出来,它们描述得相当好。
这个想法是
您总是需要一个(端点)传输来从/从有线或其他任何物理方式写入/读取数据。
您可能希望在端点传输之上添加其他功能层,例如压缩数据,通过缓冲区或“成帧”传输优化传输,添加加密或其他任何想到的东西。
虽然第1部分是强制性的,但第二部分不是必需的。此外,您可能会在彼此之上堆叠多个分层的传输:
在其他一些目标中,Thrift旨在提供极大的灵活性和模块化,本质上是通过模块化获得灵活性。当您查看TTransport / TServerTransport或TProtocol的核心基础时,您会发现,当需要定制的传输或协议时,实际上并不需要执行大量的代码。
并且由于诸如加密或缓冲之类的东西与所使用的任何传输或协议都没有硬性依赖关系,因此很自然地使其在设计上保持独立。这就是Thrift协议/传输堆栈易于使用和易于扩展的原因。它可以让您构建出色的应用程序而不会遇到障碍。
PS:更好的解读可能是:https://thrift.apache.org/docs/concepts