【问题标题】:Difference between Apache Thrift and ZeroMQApache Thrift 和 ZeroMQ 的区别
【发布时间】:2011-12-25 02:54:49
【问题描述】:

据我了解,Apache Thrift 和 ZeroMQ 是属于不同类别的软件,由于是苹果和橙子的比较,所以不容易做比较。但我不知道为什么它们属于不同的类别。它们不是都用来在不同的服务之间传递数据吗?这些服务可能用不同的语言编写,也可能不用?

什么时候应该使用 Thrift,什么时候应该使用消息队列?

【问题讨论】:

    标签: comparison message-queue thrift zeromq


    【解决方案1】:

    它们属于不同的类别,主要是因为它们针对具有不同关注点的不同受众。因此他们更擅长不同的事情。

    Apache Thrift 类似于Google Protocol Buffers 旨在成为高级的、相当好的抽象手段,用于在不同机器上的进程之间发送数据,可能使用不同的语言。他们有目的地提供一个 IDL 层来描述消息,可能带有自动或半自动版本控制和可选部分。

    另一方面,

    ZeroMQ,而不是一般的 消息队列(这将是一个完全独立的问题),都是关于速度的。它们有效地将字节移动到另一端。沿途尽可能少停站。因此,您负责序列化、版本控制或其他对开发人员很重要的事情。当然,这可能意味着复杂性,尤其是当您在不同平台和语言之间进行通信时,但这是缺乏抽象的部分惩罚。

    选择哪个?取决于你的项目。如果您不需要绝对的原始性能,则更高级别的工具包可能会很好地满足您的目的。如果您正在构建一个高速低延迟的应用程序,那么无论如何您最终都会更接近金属。

    祝你好运

    【讨论】:

      【解决方案2】:

      Thrift 定义了如何表示复杂数据,以便它可以被不同的语言写入和读取(因此它具有 IDL 来定义将被传输的类型)。它还定义了在两个端点之间传输此类格式化消息的简单方法(也称为 thirft 传输)。

      另一方面,ZeroMQ 的亮点在于您可以在端点之间传输消息以获得不同的行为,例如一对一、一对多、多对多,以及对此类传输的速度和可靠性的不同期望。至于消息本身,它只是 ZeroMQ 的一个 blob,应用程序应该找到一种编码解码它们的方法。

      因此,如果您的数据结构复杂但消息传递模式简单,那么您可能会倾向于节俭的一面。如果您有简单的数据但复杂的消息传递模式,您可能会依赖 ZeroMQ 或类似的东西 (AMQP)。

      如果两者都需要,可以成对使用 THrift 和 ZeroMQ,thrift 格式化消息,ZeroMQ 传输消息。

      【讨论】:

        【解决方案3】:

        Davorin 提到了成对使用 Thrift 和 ZeroMQ,如果您对这种方法感兴趣,请查看 Thrift 代码库并在 thrift/contrib/zeromq 下查看使用 ZermoMQ 的 Thrift 演示。

        【讨论】:

        猜你喜欢
        • 2015-02-20
        • 2015-07-28
        • 2022-01-21
        • 2015-12-17
        • 1970-01-01
        • 2017-04-14
        • 1970-01-01
        • 2011-06-05
        • 2013-07-25
        相关资源
        最近更新 更多