2017-10-23 7 views
0

私はいくつかのマイクロサービスを持っています:AとB。BとBはいくつかの外部サービスを呼び出します。 AとBはSleuthを使用します。 SleuthはヘッダX-B3-TraceIdとX-B3-SpanIdを定義します。spring-cloud-sleuthサービスとサードパーティサービスの統合

ので...外部サービスにBとBに

質問ヘッダを伝播します:サービスBは、応答までの彼のヘッダを格納していますか?そして、外部サービスが何とか私のヘッダーを壊し、応答として私はヘッダーで間違ったIDを取得します...何が起こるでしょうか? このような種類の衝突を避けるために自分自身のヘッダーを定義する方が良いでしょうか?外部サービスとやり取りする最善の方法は何ですか?

答えて

1

質問:サービスBは応答までヘッダーを保存しますか? 私は本当に続くわけではありませんが、回答が返って何らかの追加の処理が行われると、トレース情報が保持されるかどうかという疑問があると仮定します。答えははいです、伝播されます。

外部サービスがどういうわけか私のヘッダーを壊し、応答としてヘッダーで間違ったIDを取得すると...何が起こりますか?

応答ヘッダーは重要ではありません。リクエストにはすべてのトレース情報が含まれています。 SRとSSの注釈がZipkinインスタンスに表示されないため、外部サービスはシステム内に表示されません。だから彼らにリクエストを送った後、あなたは明らかに彼らの側で何が起こるかを知らないでしょう。

このような種類の衝突を避けるために自分のヘッダーを定義する方がよいでしょうか?外部サービスとやり取りする最善の方法は何ですか?

私は、リクエストヘッダーが応答ではなく重要であることを説明することで対応できたと思います。

+0

応答いただきありがとうございます、私は考えを持っているようです。 – Pavel

+0

Marcin、私たちは別の質問を出しました: 私はクライアント(非春)を持っています - それは私のサービスを呼び出しますA.クライアントは私の別のサービスを呼び出します。私は同じIDの両方の呼び出しをトレースしたいid)。 また、このIDがサービスAの最初の呼び出しで生成された場合は、いいと思うでしょう。 これを行うにはどうすればよいですか? – Pavel

+0

https://github.com/openzipkin/braveをA、BraveまたはSleuthにB、Braveに、またはSleuthをCに使用してください。そうすれば、SleuthとBraveは一緒にうまく動作するので、すべてが適切に伝播します。 –

関連する問題