我知道Apache Thrift和ZeroMQ是属于不同类别的软件,并且很难进行比较,因为这是苹果与橘子的比较。但我不知道为什么它们属于不同的类别。它们不是都用于在不同的服务之间传递数据吗?这些服务可能用不同的语言编写,也可能不是用不同的语言编写的?
什么时候应该使用 Thrift,什么时候应该使用消息队列?
它们属于不同的类别,主要是因为它们针对具有不同关注点的不同受众。 因此他们在不同的事情上更擅长。
Apache Thrift 与 Google Protocol Buffers 类似,旨在成为高级的、相当抽象的方法,以便在不同机器上的进程之间(可能使用不同的语言)发送数据。 他们有目的地提供一个 IDL-ish 层来描述消息,可能带有自动或半自动版本控制和可选部分。
另一方面,ZeroMQ,而不是一般的消息队列(这将是一个完全独立的问题),都是关于速度的。 它们有效地将字节移动到另一端。 沿途尽可能少停站。 因此,您负责序列化、版本控制或其他对开发人员来说重要的事情。 当然,这可能意味着复杂性,特别是当您在不同平台和语言之间进行通信时,但这是缺乏抽象的惩罚的一部分。 选择哪个? 取决于你的项目。 如果您不需要绝对的原始性能,更高级别的工具包可能会很好地满足您的目的。 如果您正在构建高速低延迟应用程序,无论如何您最终都会更接近金属。
祝你好运