gpt4 book ai didi

RabbitMQ跟踪消息处理

转载 作者:行者123 更新时间:2023-12-05 03:59:08 26 4
gpt4 key购买 nike

背景

我使用 RabbitMQ 作为分布式队列。这发生在微服务架构的一部分。

我的软件架构是这样的: enter image description here

所有服务(1 到 3)之间的通信是通过队列中的消息 (rabbit-MQ) 进行的。每个红色箭头都是一条排队到 RabbitMQ 中的消息。

问题:

我想计算每个服务的执行时间。它应该创建这样的结果: enter image description here

可以看到,虽然是同一个服务,但是队列消息的执行时有不同(取决于数据)。

我想创建一种可视化方式来展示这些供应链,以便更好地了解我最关键的供应链是什么?

解决思路

队列中的每条消息都有一个唯一的消息 ID。关注:

  • 将消息添加到另一个属性 - 当它被排入队列时。
  • 将消息插入队列并将其存储在数据库中。在数据库中,我们将显示消息 ID、目标服务和父队列消息 ID(如果有)。
  • 使消息出队的目标服务在最后跟踪它的处理时间(花费了多少时间)- 更新数据。

如您所见,目标是使该解决方案具有通用性。

问题:

  1. 您有什么技巧可以让它更通用吗?
  2. 也许 RabbitMQ 可以自己提供这个摘要?
  3. 欢迎任何其他提示。

最佳答案

您正在寻找的是分布式跟踪工具。至少有两种工具可以帮助您实现目标:ZipkinJaeger .两者都与 OpenTracing 兼容标准。两种工具的总体架构相似。

关于 OpenTracing:

OpenTracing is a new, open distributed tracing standard for applications and OSS packages.

最后你会得到这样的东西(zipkin):

enter image description here

不幸的是,他们没有针对 amqp 的现成解决方案。有必要为 amqp 消息集成跟踪自己。

作为开始,我建议阅读有关 zipkin 的内容.然后深入了解 zipkin 的工作原理 with consumers and producers ,这是一个相对较新的功能。也来看看implementation for kafka可能有助于澄清很多。

Trace,包括 amqp 消息和 http 请求,可能看起来像这样:

enter image description here

所以,你的问题:

Do you have tips to make it even more generic?

已经有一个标准了

Maybe RabbitMQ can provide this summary itself?

很遗憾没有

关于RabbitMQ跟踪消息处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57489941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com