了解Apache Thrift与TCP套接字服务器的特征

Understanding the characteristics of Apache Thrift versus TCP socket servers?

本文关键字:服务器 特征 套接字 TCP Apache Thrift 了解      更新时间:2023-10-16

我有一些使用OpenSSL编写TCP套接字服务器的经验,我希望更多地了解Apache Thrift。我已经查看了Thrift服务器的一些基本示例,我知道Thrift可以处理管道。

有人可以简单解释一下Thrift服务器与TCP服务器的不同之处(除了使用管道)吗?Thrift 框架是否使用不同的传输协议?

我知道这是一个直截了当的问题,但我似乎找不到初学者级别的解释。

Thrift 服务器与 TCP 服务器有何不同?

节俭至少是原始套接字上方的一个抽象层。它为您提供了一个抽象,允许您通过任何介质发送和接收信息,其中一种可能是TCP套接字。

底层传输介质本身并不重要,使用的协议也不重要(二进制、紧凑、JSON ...你的名字)。两者都对应用程序的其余部分完全透明。

换句话说,您针对类型安全的服务 API 进行开发,而不是自己编写套接字或解析某些 JSON。

Thrift 允许您专注于作为客户端使用该服务执行的操作和/或实现服务器端逻辑,而不是摆弄字节、编码和对抗套接字的微妙之处。

此外,您可以根据需要更改传输和/或协议,而不会影响代码的其余部分。

  1. 节俭协议是TCP传输层上的更高级别的实现。它提供了重要的元素:

    • 序列化
    • RPC 协议
  2. 从我个人的角度来看,主要好处之一是类型安全,尤其是在不同语言之间。为复杂情况手动编写TCP(套接字)解决方案似乎非常困难。

因为它是从正式定义(IDL - *.thrift 文件,有时这种形式称为模式)生成的,所以它与 WSDL/SOAP 有相似之处,但性能更高。我在移动客户端等上使用它。

去年最流行的是JSON而不是REST,据我所知,大多数代码应该手动编写。JSON没有模式(在官方标准中),也许在未来。

我使用的首字母缩略词是众所周知的。我的回答非常笼统和简化,专业人士请原谅我。