【问题标题】:Thrift vs Protocol buffers [duplicate]节俭与协议缓冲区[重复]
【发布时间】:2011-05-16 15:44:31
【问题描述】:

我已经使用 PB 有一段时间了,但是 Thrift 一直在我的脑海中。

在我看来,节俭的主要优点是:

  1. 本机集合(即向量、集合等)与 PB 重复提供的功能相似但不太相似(没有迭代器,除非您深入研究文档指出“在大多数情况下不需要”的 RepeatedField)。
  2. 提供了一个不错的 RPC 实现,而不仅仅是插入你自己的钩子。
  3. 更多官方支持的语言(PB 为 Java、C++、Python 提供“官方”支持)

Thrift 的缺点:

  1. RPC 实现意味着我无法在顶部插入自己的(例如)加密/身份验证层。
  2. Windows 支持似乎不是很好。
  3. PB 确实似乎有(如果不是更好的话)更易于访问的文档。

中性:

  • Windows (Thrift) 上 .lib/.dll 的大小未知。
  • Windows 上的大尺寸 .lib(PB,但它确实提供了一个小得多的 -lite)。
  • 在速度方面,它们看起来很相似。

我还没有准备好冒险改用 Thrift,谁能给我更多的优点/缺点,或者选择哪种方式的理由?

谢谢!

【问题讨论】:

  • 将更新放在单独的部分而不是覆盖原始问题被认为是一种很好的风格。 :)
  • 您实际上可以添加自己的加密/身份验证层。您只需要编写一个替代的 TTransport 类。或者类似的东西..那里有一个 TSSLSocket 类。
  • 老问题,我知道。只想提一下,自 2010 年以来,Thrift 对 Windows 的支持有了很大改进。

标签: c++ windows protocol-buffers thrift


【解决方案1】:

正如我所说的 "Biggest differences of Thrift vs Protocol Buffers?" 主题:

参考Thrift vs Protobuf vs JSON comparison:

此外,还有许多有趣的附加工具可用于这些解决方案,这可能会有所决定。以下是 Protobuf 的示例:Protobuf-wireshark、protobufeditor。

【讨论】:

【解决方案2】:

您可能想先分析您的需求:

您需要与协议无关的格式吗?例如,您想实现自定义协议还是需要 100% 的可移植性?在这种情况下,请使用 PB。

如果您对 Thrift 的默认协议感到满意,并且您需要一个协议开始,请务必使用 Thrift。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    我们的项目坚持使用 Thrift 而不是协议缓冲区的主要原因是协议缓冲区不会自动生成完整的 RPC 服务器,而现有的 PB 解决方案似乎都相当不稳定。只是我的 0.02 美元。

    【讨论】:

      【解决方案4】:

      您需要详细说明您的用例。否则,这是“汽车或卡车哪个更好?”问题。

      【讨论】:

      • 不是真的; Thrift 和 Protocol Buffers 的用例是相似的。从根本上讲,它们都是实现跨平台数据序列化的通用方法。在更高的层次上,两者都可以用来实现跨平台的客户端/服务器应用程序。它们都足够通用,可以仅用作序列化格式,也可以用作更大系统中的构建块。但是,在他们的基础上,他们提供了同样的东西。问题是,这两种实现是否“更好”?而且,在更高的层次上,所提供的附加服务是否值得? (与 Thrift)。
      • 让我换一种说法,然后:你能评价你列出的优点和缺点,从与你的应用程序最相关到最不相关吗?或者在 1 到 10 的范围内,对于每个,您认为每个对您的问题域有多大影响?我正在认真考虑将 Protocol Buffers 用于一个工作项目,但后来我认为对我来说最重要的是缺乏内在的消息框架(你不能只将 PB 连续写入磁盘,你需要一个信封)。对于某些情况(UDP 消息传递、某些形式的 IPC、RPC),这无关紧要;对我来说,这是一个交易破坏者。
      • 哦,让我抛出另一个想法,看看它是否会引起你的共鸣:我认为 Thrift 的支持者比 Protocol Buffers 的支持者有更弱的长期激励来改进他们的产品。
      • @JohnZwinck - 你能解释一下为什么 fb 改善节俭的动机不如 google 改善 pb 的动机吗?
      • 圣古评论!我不记得我当时的想法,而且无论如何 cmets 不应该是一个讨论论坛。不管怎样,我说的是“看看它是否能引起你的共鸣”,所以如果没有,那就忽略我在那里说的话。 :)
      猜你喜欢
      • 1970-01-01
      • 2011-09-18
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多