マイクロサービス アーキテクチャにトレースを実装したいと考えています。メッセージ ブローカーとして Apache Kafka を使用していますが、Spring Framework は使用していません。トレースは私にとって新しい概念です。最初は独自の実装を作成したかったのですが、現在は既存のライブラリを使用したいと考えています。ブレイブは私が使いたいもののように見えます。これを行う方法に関するガイド、例、またはドキュメントがあるかどうかを知りたいです。Github ページのドキュメントは最小限で、Brave を使い始めるのは難しいと思います。または、適切なドキュメントを備えた、使いやすいより良いライブラリがあるかもしれません。有望に見えるので、Apache HTrace を調べます。いくつかの入門ガイドはいいでしょう。
1082 次
2 に答える
0
私も同じ問題を抱えています。これが私の解決策です。
ServerSpan serverSpan = brave.serverSpanThreadBinder().getCurrentServerSpan();
TraceHeader traceHeader = convert(serverSpan);
//in kafka producer,user KafkaTemplete to send
String wrapMsg = "wrap traceHeader with originMsg ";
kafkaTemplate.send(topic, wrapMsg).get(10, TimeUnit.SECONDS);// use synchronization
//then in kafka consumer
ConsumerRecords<String, String> records = consumer.poll(5000);
// for loop
for (ConsumerRecord<String, String> record : records) {
String topic = record.topic();
int partition = record.partition();
long offset = record.offset();
String val = record.value();
//parse val to json
Object warpObj = JSON.parseObject(val);
TraceHeader traceHeader = warpObj.getTraceHeader();
//then you can do something like this
MyRequest myRequest = new MyRequest(traceHeader, "/esb/consumer", "POST");
brave.serverRequestInterceptor().handle(new HttpServerRequestAdapter(new MyHttpServerRequest(myRequest), new DefaultSpanNameProvider()));
//then some httprequest within brave-apache-http-interceptors
//http.post(url,content)
}
MyHttpServerRequest と MyRequest を実装する必要があります。簡単です。URI、ヘッダー、メソッドなど、必要なスパンを返すだけです。 これはラフで醜いコード例ですが、アイデアを提供してください。
于 2017-03-15T09:36:01.557 に答える