我发现自己陷入了一个非常规的问题。我将用 Java 编写一个组件,该组件将从多线程系统中收集一些信息。我将不胜感激任何可以帮助我进步的信息或建议。以下是一些细节:
-system 包含许多相互交换信息的子系统(例如,一个组件可以运行另一个组件来进行一些记录或计算数据)
- 在系统上执行的每个操作更像是一个命令链,并导致连续运行几个组件,
-系统收到大量请求并且操作没有ID,因此很难跟踪哪个操作属于哪个链(我需要获取链的每个步骤的操作时间)
我必须处理的问题: - 操作中缺少 ID - 最终在子系统之间交换 ID - 代码更改最少(它是一个巨大的系统) - 最终找到解决此类问题的现有开源解决方案(或至少一些一部分)
这是我的组件从单个操作中获得的示例结果:
搜索 nr 60
Component1 45s Component6 2s Component4 32s Component2 4s
其中 45、2、32、4 代表在每个组件中花费的时间
如果有人发现自己解决了类似的问题或在日志记录/信息收集领域有经验,您的建议可以极大地帮助我。
编辑:我在 AspectJ 中创建了组件,它可以测量“围绕”每个方法的时间并将每个子系统的结果收集在一起。主要问题是我无法识别哪个日志属于哪个请求(例如特定的“搜索号 60”或“添加号 5”请求)。所以问题是:是否有任何有效的方法来创建可以通过控制流传输(以及如何传输)而不需要大量源代码更改的请求 ID?