Syntax | سینتکس
3.01K subscribers
410 photos
108 videos
35 files
378 links
Download Telegram
👍6
Syntax | سینتکس
#tracing @Syntax_fa
تو tracing مفهوم spans و traces چیه؟

وقتی در مورد tracing حرف می‌زنیم، دو مفهوم اساسی وجود داره که باید بدونی: Spans و Traces

اسپن‌ها (Spans)

یک span نمایانگر یک واحد کار (unit of work) هست که توسط یک درخواست انجام می‌شه. این واحد کار می‌تونه شامل اتفاق‌هایی مثل یک انشعاب (fork) در جریان اجرا یا یک انتقال (hop) در شبکه باشه، وقتی که درخواست در سیستم پخش می‌شه:

هر span ویژگی‌های زیر رو داره:
- اسم مشخص
- زمان شروع
- مدت زمان اجرا

معمولاً spanها به صورت تو در تو (nested) و مرتبط با ترتیب زمانی هستن، تا بتونن روابط (causal relationships) رو نشون بدن.

تریس‌ها (Traces)
یه trace رو میتونیم یک کار کامل در نظر بگیریم. وقتی چند تا span کار های unit رو انجام میدن و در نهایت به یک ریسپانسی میرسه کل این flow یک trace هستش.

می‌شه یه trace رو به عنوان یک گراف بدون چرخش جهت‌دار (Directed Acyclic Graph یا DAG) از spanها تصور کرد. یا حتی ساده‌تر، بهش به چشم یه استک تریس (stack trace) نگاه کرد که هر span توش نشون‌دهنده کاری هست که توسط یه کامپوننت انجام شده.

رابطه بین Trace و Spans

این رابطه به این شکله که یه trace مجموعه‌ای از spanها رو شامل می‌شه که مسیر یک درخواست رو در سیستم نشون می‌ده.
تو شکل بالا دو روش مختلف برای نمایش یک trace که شامل پنج span هست رو می‌بینیم. این درخواست از پنج سرویس مختلف عبور می‌کنه و در هر سرویس یه span جدید ایجاد می‌شه.

- سمت چپ: trace به صورت یک DAG نشون داده شده.
- سمت راست: trace به صورت یک نمودار میله‌ای (bar diagram) نمایش داده شده که محور زمان رو هم نشون می‌ده.

ایجاد Root Span و ID اختصاصی
وقتی یه درخواست از اولین سرویس (که بهش edge service می‌گن) شروع می‌شه، root span ایجاد می‌شه. این root span تبدیل می‌شه به اولین گره (node) در trace.

ویژگی root span:
- بهش یه Trace ID یکتا و گولالی (globally unique trace ID) اختصاص داده می‌شه.
- این Trace ID به همراه هر hop بعدی در طول عمر درخواست منتقل می‌شه.

ایجاد Spanهای جدید در هر Hop
هر بار که درخواست به نقطه‌ای از سیستم که ابزار tracing در اون فعال شده می‌رسه:
1. یه span جدید با Trace ID موجود ایجاد می‌شه.
2. ممکنه متادیتا (metadata) به درخواست اضافه بشه.
3. ا Trace ID دوباره به همراه درخواست به hop بعدی ارسال می‌شه.

ثبت و ارسال داده‌ها (Instrumentation)
وقتی جریان اجرا به یک نقطه instrumented می‌رسه:
- یه رکورد (record) همراه با متادیتا ثبت می‌شه.
- این رکورد معمولاً به صورت asynchronously در دیسک ثبت می‌شه.
- بعد از اون، این رکورد به یک collector ارسال می‌شه که جریان اجرا رو از روی رکوردهای ثبت‌شده بازسازی می‌کنه.

source:
Cloud native go Book

#tracing

@Syntax_fa
👍6🔥1