为什么 apache thrifts transport layer 分为 low-level transport 和 transport wrapper
Why is apache thrifts transport layer divided into low-level transport and transport wrapper
我认为之所以划分 Apache Thrift 的传输层是因为底层传输只是 uses/wrap 一些基本的 Java 功能,如套接字。并且传输包装器仅准备数据,例如使用 zlib-transport 或 framed-transport 并使用其他一些传输将其发送到网络。但是 HttpClient 也是一个传输包装器,并没有使用另一种传输方式进行发送。
那么Apache Thrift将传输层分为底层传输和传输包装器的原因是什么?
近些年来,"layered transport"和"endpoint transport"这两个词被创造出来,他们描述得相当好。
想法是
你总是需要一个(端点)传输到 write/read 数据 from/off 电线或任何可能的物理等效物。
您可能希望在端点传输之上添加额外的功能层,例如压缩数据、通过缓冲区或 "framed" 传输优化传输、添加加密或任何其他功能记.
虽然第 1 部分是强制性的,但第二部分不是。此外,您可以将多个分层传输堆叠在一起:
- 协议=紧凑
- 分层传输 = 自定义加密传输
- 分层传输 = 成帧传输
- 端点传输=套接字
在其他一些目标中,Thrift 旨在提供极大的灵活性和模块化,本质上是通过模块化获得灵活性。当您查看什么是 TTransport/TServerTransport 或 TProtocol 的核心基础时,您会发现当需要自定义传输或协议时,它并不是真正需要实现的大量代码。
并且由于诸如加密或缓冲之类的东西与所使用的任何传输或协议没有硬性依赖关系,因此通过设计使它们保持独立是很自然的。这就是让 Thrift protocol/transport 堆栈易于使用和扩展的原因。它可以让您在不妨碍的情况下构建出色的应用程序。
PS:更好的阅读可能是:https://thrift.apache.org/docs/concepts
我认为之所以划分 Apache Thrift 的传输层是因为底层传输只是 uses/wrap 一些基本的 Java 功能,如套接字。并且传输包装器仅准备数据,例如使用 zlib-transport 或 framed-transport 并使用其他一些传输将其发送到网络。但是 HttpClient 也是一个传输包装器,并没有使用另一种传输方式进行发送。
那么Apache Thrift将传输层分为底层传输和传输包装器的原因是什么?
近些年来,"layered transport"和"endpoint transport"这两个词被创造出来,他们描述得相当好。
想法是
你总是需要一个(端点)传输到 write/read 数据 from/off 电线或任何可能的物理等效物。
您可能希望在端点传输之上添加额外的功能层,例如压缩数据、通过缓冲区或 "framed" 传输优化传输、添加加密或任何其他功能记.
虽然第 1 部分是强制性的,但第二部分不是。此外,您可以将多个分层传输堆叠在一起:
- 协议=紧凑
- 分层传输 = 自定义加密传输
- 分层传输 = 成帧传输
- 端点传输=套接字
在其他一些目标中,Thrift 旨在提供极大的灵活性和模块化,本质上是通过模块化获得灵活性。当您查看什么是 TTransport/TServerTransport 或 TProtocol 的核心基础时,您会发现当需要自定义传输或协议时,它并不是真正需要实现的大量代码。
并且由于诸如加密或缓冲之类的东西与所使用的任何传输或协议没有硬性依赖关系,因此通过设计使它们保持独立是很自然的。这就是让 Thrift protocol/transport 堆栈易于使用和扩展的原因。它可以让您在不妨碍的情况下构建出色的应用程序。
PS:更好的阅读可能是:https://thrift.apache.org/docs/concepts