代码之家  ›  专栏  ›  技术社区  ›  dominik

节俭,阿夫罗,Protocolbuffers-他们都死了吗?

  •  45
  • dominik  · 技术社区  · 8 年前

    在一个宠物项目(cassandra、spark、hadoop、kafka)中,我需要一个数据序列化框架。查看常见的三个框架,即Thrift、Avro和Protocolbuffers,我注意到它们中的大多数似乎都是死气沉沉的,一年最多发布两个小版本。

    这给我留下了两个假设:

    • 它们和这样的框架一样完整,只要不需要新的特性,就处于维护模式
    • 没有理由存在这样的框架-我不清楚为什么。如果是的话,有什么替代方案?

    如果有人能给我一个关于我假设的提示,欢迎任何意见。

    4 回复  |  直到 8 年前
        1
  •  41
  •   Kenton Varda    8 年前

    协议缓冲区是一个非常成熟的框架,大约15年前在Google首次引入。它肯定不会死:谷歌内部几乎所有的服务都使用它。但是,经过这么多的使用,现在可能没有什么需要改变的了。事实上,他们在今年发布了一个主要版本(3.0),但是这个版本是关于删除和添加功能。

    Protobuf的关联RPC系统, gRPC ,是相对较新的,最近有更多的活动。(然而,它是基于谷歌的内部RPC系统,该系统已经发展了大约12年。)

    我不太了解节俭或Avro,但他们也存在了一段时间。

        2
  •  28
  •   JensG    8 年前

    与Protobuf相比,Thrift的优势在于它提供了一个完整的RPC和序列化框架。此外,Thrift支持大约20多种目标语言,而且这个数字还在增长。我们即将加入.NET核心,在不久的将来会有Rust支持。

    事实上,过去几个月没有太多的节俭发行,这肯定是需要解决的问题,我们完全意识到这一点。另一方面,代码库的整体稳定性相当好,因此可以使用Github分叉,并从当前主代码中单独切割分支-当然,使用通常的质量度量。

    Avro和Thrift的主要区别在于Thrift是静态类型的,而Avro使用更动态的方法。在大多数情况下,静态方法非常适合您的需求,在这种情况下,节约可以让您受益于生成代码的更好性能。如果不是这样,Avro可能更合适。

    此外,值得一提的是,除了节俭、Protobuf和Avro,市场上还有更多的解决方案,如Capt'n'proto或BOLT。

        3
  •  2
  •   Shastick    8 年前

    关于节俭:据我所知,它是活生生的。我们将它用于序列化和内部API,这是我工作的地方,它可以很好地工作。

    缺少的东西,如连接多路复用和更用户友好的客户端,已经通过Twitter等项目添加 Finagle .

    尽管我会将我们对它的使用描述为 半密集型 只是(即,我们不首先考虑性能:它应该易于使用,并且在其他任何事情之前没有bug),我们到目前为止没有遇到任何问题。

    所以,关于节俭,我认为它属于你的第一类

    Protocolbuffers是thrift序列化部分的替代品,但它不提供thrift提供的RPC工具箱。

    我不知道有任何其他项目将RPC和序列化混合到这样一个简单易用且完整的单一包中。

    [*]无论如何,一旦你开始使用它并看到它的所有好处,就很难 将其放入第二类:)

        4
  •  1
  •   pdxleif    6 年前

    它们在很多地方都非常有用,所以我要说这是你的第一个假设。我不知道您对发布时间表的期望是什么,但对于如此规模和成熟度的库来说,它们似乎是正常的。见鬼,Avro 1.8.0是在2016年初推出的,大多数东西仍然使用Avro 1.7.7(例如Spark、Hadoop)。 https://avro.apache.org/releases.html