2

マイクロサービス アーキテクチャにトレースを実装したいと考えています。メッセージ ブローカーとして Apache Kafka を使用していますが、Spring Framework は使用していません。トレースは私にとって新しい概念です。最初は独自の実装を作成したかったのですが、現在は既存のライブラリを使用したいと考えています。ブレイブは私が使いたいもののように見えます。これを行う方法に関するガイド、例、またはドキュメントがあるかどうかを知りたいです。Github ページのドキュメントは最小限で、Brave を使い始めるのは難しいと思います。または、適切なドキュメントを備えた、使いやすいより良いライブラリがあるかもしれません。有望に見えるので、Apache HTrace を調べます。いくつかの入門ガイドはいいでしょう。

4

2 に答える 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 に答える