我正在考虑在 Flink 上下文中分布式跟踪。我有以下问题:
如何在 Flink 管道本身内部实现跟踪?也就是说,如何将不同算子之间的跟踪上下文从源传播到接收器(进程内上下文传播)?
如何在边缘粘东西?也就是说,从源读取时提取上下文,并在写入接收器时将其放入(进程间上下文传播)?
特别是对于 2,我只需要支持 Kafka 源和接收器。我想典型的做法是使用 kafka headers,如here所述。这还有一个优点,例如不需要更改有效负载模式。
更一般地说,是否有任何(特定于 Flink 的)库/集成可以帮助完成手头的任务?例如,通过使用跟踪功能来装饰转换,如here为 Kafka Streams 所做的那样。另请参阅这个相关问题或这个类似拦截器的包装器,这可能是有效扩大上下文以进行跟踪的另一种选择。
就其价值而言,我最感兴趣的是基于 OpenTracing 和/或 OpenTelemetry 的解决方案。
在过程中 java进程使用ThreadLocal来传递 不能侵入队列,框架,组件可以包裹对象,在包裹对象中传递
进程之间 标头传递中的 Rest、rpc、mq 协议