我想在我的微服务架构中实现跟踪。我使用apachekafka作为消息代理,而不是spring框架。追踪对我来说是个新概念。起初我想创建自己的实现,但现在我想使用现有的库。勇敢的人看起来像一个我想使用。我想知道是否有一些指南,例子或文件如何做到这一点。github页面上的文档很少,我发现很难开始使用brave。或者也许有更好的图书馆,有适当的文件,这是更容易使用。我将关注apachehtrace,因为它看起来很有前途。一些入门指南会很好。
我想在我的微服务架构中实现跟踪。我使用apachekafka作为消息代理,而不是spring框架。追踪对我来说是个新概念。起初我想创建自己的实现,但现在我想使用现有的库。勇敢的人看起来像一个我想使用。我想知道是否有一些指南,例子或文件如何做到这一点。github页面上的文档很少,我发现很难开始使用brave。或者也许有更好的图书馆,有适当的文件,这是更容易使用。我将关注apachehtrace,因为它看起来很有前途。一些入门指南会很好。
2条答案
按热度按时间sg2wtvxw1#
有很多方法可以回答这个问题,但我将从“单向”的Angular 来回答。不过,简单的回答是,我认为你现在必须自己动手!
虽然Kafka可以用在许多方面,但它可以作为单向单生产者单消费者信息的传输。此操作类似于普通的单向rpc,在这里您有一个请求,但没有响应。
在zipkin中,rpc跨度通常是请求-响应。例如,您可以看到客户机发送到服务器的时间,以及返回客户机的方式。单程是你忽略另一边的地方。span以“cs”(client send)开始,以“sr”(server received)结束。
将此Map到kafka,您将在生成消息时标记client sent,在消费者收到消息时标记server received。
Kafka的诀窍在于,没有一个好地方可以填充跟踪上下文。这是因为与许多消息传递系统不同,kafka消息中没有标头。如果没有跟踪上下文,就不知道要完成哪个跟踪(或跨度)!
“hack”方法是将跟踪标识符填充为消息键。一种不那么黑客的方法是协调一个body Package 器,您可以将跟踪上下文嵌套到其中。
这是前者的一个例子:
https://gist.github.com/adriancole/76d94054b77e3be338bd75424ca8ba30
yk9xbfzb2#
我也遇到了同样的问题。这是我的解决办法,一种不那么老套的方法,如上所述。
您必须实现myhttpserverrequest和myrequest。这很简单,您只需返回一个span所需的内容,例如uri、header和method。这是一个粗糙难看的代码示例,请给出一个想法。