Apache Thrift和ZeroMQ之间的区别

Joy*_*abu 31 comparison thrift message-queue zeromq

我知道Apache Thrift和ZeroMQ是属于不同类别的软件,并且要进行比较并不容易,因为它是一个苹果与橙色的比较.但我不知道他们为什么属于不同的类别.他们是不是都习惯在不同服务之间传递数据,这些服务可能会也可能不会用不同的语言编写?

我何时应该使用Thrift?何时应该使用消息队列?

sdg*_*sdg 44

它们属于不同的类别,主要是因为它们针对不同的受众而有不同的关注点.因此他们在不同的事情上更好.

类似于Google协议缓冲区的Apache Thrift旨在成为高级,相当好抽象的方法,用于在不同机器上的进程之间发送数据,可能使用不同语言.他们故意提供IDL-ish层来描述消息,可能还有自动或半自动版本控制和可选部分.

另一方面,ZeroMQ通常不是消息队列(这将是一个完全独立的问题),而是关于速度.它们有效地将字节移动到另一端.尽可能少的路段停下来.因此,你有责任系列化,版本控制,或任何其他重要的是的开发人员.当然,这可能意味着复杂性,特别是如果您在不同平台和语言之间进行通信,但这是缺乏抽象的一部分.

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

祝好运


Dav*_*jan 25

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

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

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

如果你需要两者,你可以使用THrift和ZeroMQ对,thrift来格式化消息,ZeroMQ来传输它.


Ami*_*hat 7

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