我有一个基于kafka
的基于微服务的项目,该项目用于事件总线。我有一个业务流程,其中包含多个微服务。微服务通过help kafka彼此异步通信。每个业务流程实例都有唯一的process_id
。
让我们考虑一些过程的示例:
request_id == 556bb813-bf77-4f5f-8bb0-1a59d6ba16b4
创建一个进程。service1_in
产生一些事件。当然,事件包含556bb813-bf77-4f5f-8bb0-1a59d6ba16b4
。service1_in
中的事件,并将事件产生到service2_in
。service2_in
中的事件,并产生事件到service1_in
。service1_in
中的事件,并将事件产生到service1_out
。service1_out
中的事件,并最终将结果返回给客户端。因此,我需要测量此过程不同步骤之间的执行时间。例如,我想知道步骤3
和5
或2
和6
之间的持续时间。
所以,我不知道如何测量它。我只有一个解决方法。我可以拥有共享内存(例如redis),在这里我可以存储每个流程主干的时间点。在过程结束时,我可以计算所有指标并将其推入datadog。