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

时间:2017-01-09 18:20:00

标签: c++ sockets thrift

我有使用OpenSSL编写TCP套接字服务器的经验,我希望了解有关Apache Thrift的更多信息。我查看了Thrift服务器的一些https://support.plaid.com/customer/en/portal/articles/2522325-plaid-stripe-troubleshooting示例,我知道Thrift可以处理管道。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

    最流行的去年是基于REST的JSON,据我所知,大多数代码都应该手动编写。 JSON没有架构(在官方标准中),可能在未来。

    我使用的缩略语一般都是已知的。我的回答非常简洁,专业人士请原谅我。

答案 1 :(得分:1)

  

[...] Thrift服务器与TCP服务器的不同之处?

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

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

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

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

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