Topik temu duga representatif

Temu Bual Reka Bentuk Sistem: Bagaimanakah Anda Akan Mereka Bentuk Platform Penjejakan Teragih?

Reka bentuk sistemSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Reka bentuk platform penjejakan teragih berbilang penyewa untuk 500,000 aliran kerja punca (root workflows) baharu sesaat dan purata 15 rentang (spans) bagi setiap aliran kerja. Platform ini mesti menyebarkan konteks yang boleh saling kendali (interoperable context), menginges rentang tanpa melengahkan permintaan aplikasi, membina semula jejak yang tidak lengkap dan tidak teratur, menyokong carian tepat ID jejak serta carian bertapis, dan mengekalkan jejak yang berguna di bawah belanjawan storan yang terhad. Jejak yang disimpan mestilah boleh dicari dalam masa 30 saat pada p99, carian tepat ID jejak mesti selesai dalam masa 2 saat pada p99, dan kegagalan zon serantau tidak boleh mengganggu instrumentasi. Terangkan API, model rentang, sempadan penyebaran, persampelan kepala dan ekor (head and tail sampling), penghalaan, storan dan indeks, kapasiti, pelbagai penyewa, penurunan taraf (degradation), dan pengesahan.

Kehendak dan Skop

Reka bentuk platform penjejakan teragih berbilang penyewa yang digunakan oleh pasukan bahagian belakang (backend) dan kebolehpercayaan (reliability) untuk menjejaki satu permintaan atau aliran kerja tak segerak (asynchronous) merentasi perkhidmatan. Andaian temu bual adalah 500,000 aliran kerja punca baharu sesaat, purata 15 rentang bagi setiap aliran kerja, dan 700 bait bagi setiap rentang yang dikodkan sebelum pemampatan storan. Jejak yang disimpan mesti boleh dicari dalam masa 30 saat pada p99. Carian tepat mengikut penyewa dan ID jejak mesti selesai dalam masa 2 saat pada p99; carian biasa mengikut perkhidmatan, operasi, ralat, tempoh masa, dan tetingkap masa harus selesai dalam masa 3 saat pada p95. Instrumentasi tidak boleh menunggu platform pusat secara segerak (synchronously), dan kehilangan satu zon ketersediaan tidak boleh menghalang aplikasi daripada memancarkan telemetri.

Platform ini mencipta atau menerima rentang, menyebarkan konteks jejak W3C melalui pengangkutan yang disokong, memasang rentang yang tiba lewat atau tidak teratur, mensampel keseluruhan jejak di bawah belanjawan eksplisit, menyimpan butiran jejak, dan menyokong graf kebergantungan yang diperoleh daripada jejak yang disimpan. Membina SDK bagi setiap bahasa, UI APM yang lengkap, storan log, storan metrik, dan pengesanan anomali berada di luar skop. Log dan metrik mungkin membawa ID jejak atau eksemplar, tetapi ia kekal sebagai sistem yang berasingan.

Tiga halaman penyediaan temu bual bebas 2026 membentangkan penjejakan teragih sebagai latihan reka bentuk sistem yang merangkumi rentang, penyebaran konteks, pemasangan jejak, persampelan, dan storan pertanyaan. Ini membuktikan kerelevanan semasa tanpa mengaitkannya dengan mana-mana syarikat, maka artikel ini tidak membuat sebarang atribusi syarikat. Model teknikal ini diambil daripada syor W3C Trace Context, spesifikasi OpenTelemetry dan pelaksanaan Collector, serta kertas kerja Dapper oleh Google.

Perkara yang Dinilai oleh Penemu Bual

Isyarat pertama ialah sama ada calon mengekalkan hubungan sebab akibat (causality) merentasi sempadan proses. trace_id semata-mata tidak mencukupi. Setiap operasi memerlukan span_id, hubungan induk atau pautan eksplisit, pemasaan, status, identiti sumber, dan atribut yang dihadkan dengan teliti. Format W3C mentakrifkan traceparent yang boleh saling kendali dan keadaan vendor pilihan dalam tracestate; ia tidak menjadikan ID jejak masuk yang tidak dipercayai sebagai kelayakan kebenaran (authorization credential). Jawapan yang kukuh mengesahkan konteks masuk, memisahkan penyewa semasa pengingesan, dan mentakrifkan tingkah laku pada sempadan amanah (trust boundaries).

Isyarat kedua ialah model persampelan yang jujur. Persampelan kepala (head sampling) membuat keputusan sebelum keseluruhan jejak diketahui dan boleh mengurangkan beban kerja SDK, rangkaian, dan pengingesan. Ia tidak dapat menjamin pengekalan setiap ralat yang berlaku kemudian. Persampelan ekor (tail sampling) boleh memilih jejak selepas melihat kebanyakan rentang, tetapi ia mesti menerima dan memegang rentang tersebut terlebih dahulu. Ia mengurangkan storan hiliran, bukan kos pengumpulan huluan. Jika penyampel kepala 2% telah menggugurkan jejak, tiada penyampel ekor terkemudian yang dapat memulihkan rentang ralatnya.

Isyarat ketiga ialah pemasangan jejak berbanding saluran paip peristiwa generik. Rentang boleh berganda, tertangguh, dan tidak teratur; fan-out tak segerak atau kerja kelompok (batch) boleh membentuk graf asiklik terarah (DAG) dan bukannya struktur pepohon yang kemas. Penyampel ekor memerlukan semua rentang untuk satu jejak dihalakan kepada pemilik keputusan yang sama, peraturan penyiapan yang terhad, perlindungan memori, dan pengendalian rentang lewat yang eksplisit. Sempadan berkeadaan (stateful) ini menentukan sama ada reka bentuk menghasilkan bukti yang berguna atau bias persampelan yang tersembunyi.

Isyarat terakhir ialah kebolehkendalian (operability). Jawapan yang baik mengukur jumlah mentah dan yang disimpan, mengehadkan indeks atribut arbitrari, mengasingkan penyewa yang bising, mengukur penyebaran yang hilang dan rentang yang digugurkan, serta memastikan laluan telemetri tidak menjadi kebergantungan kepada aplikasi. Rajah yang berakhir dengan "tulis rentang ke pangkalan data" membiarkan persoalan kos, ketepatan, dan kegagalan tidak terjawab.

Soalan untuk Dijelaskan Sebelum Menjawab

  • Aliran kerja manakah yang memerlukan keputusan ekor? Persampelan ekor penuh memerlukan penerimaan pusat bagi semua rentang calon. Reka bentuk ini menggunakan persampelan kepala sumber untuk trafik biasa dan menghantar set laluan kritikal yang terkawal pada kadar 100% ke kolam ekor. Jika setiap laluan memerlukan pengekalan peka ralat, keseluruhan strim mentah mesti mematuhi belanjawan rangkaian dan keadaan pusat.
  • Apakah yang dimaksudkan dengan "jejak lengkap"? Tiada penanda penamat sejagat merentasi baris gilir dan kerja yang terasing. Bagi permintaan segerak, rentang punca yang selesai berserta selang kelonggaran (grace interval) adalah berguna. Aliran kerja yang berjalan lama memerlukan dasar yang lebih panjang atau penyiapan aliran kerja eksplisit. Platform ini masih mesti menerbitkan bendera incomplete dan bukannya mendakwa kepastian mutlak.
  • Carian manakah yang bersifat kontraktual? Carian tepat ID jejak dan penapis terhad merentasi perkhidmatan, operasi, status, baldi tempoh (duration bucket), dan masa berada dalam skop. Predikat teks penuh arbitrari merentasi setiap atribut akan menggandakan kos indeks dan mewujudkan penyalahgunaan kekardinalan tinggi (high cardinality), jadi atribut yang tidak disenarai putih kekal tersedia hanya selepas jejak diambil.
  • Berapa lamakah data dikekalkan? Dasar yang diandaikan ialah tujuh hari data panas yang diindeks dan 23 hari lagi data objek yang dimampatkan. Pengekalan panas yang lebih lama mengubah saiz storan dan indeks; peraturan pemadaman undang-undang juga menentukan sama ada kunci objek dan domain penyulitan mesti khusus untuk penyewa.
  • Adakah jejak rentas penyewa dibenarkan? Secara lalai adalah tidak. Get laluan mengikat kelayakan yang disahkan kepada penyewa dan menulis ganti mana-mana medan penyewa yang dibekalkan dalam rentang. Aliran kerja rentas domain yang diluluskan menggunakan pautan eksplisit atau korelasi yang dibenarkan secara berasingan, tidak sekali-kali menggunakan pengecam penyewa yang dipilih oleh klien.
  • Bagaimanakah hubungan sebab akibat tak segerak patut diwakili? Satu induk berfungsi untuk satu pendahulu sebab akibat. Pengguna kelompok dan fan-in boleh bergantung pada berbilang pengeluar, jadi ia memerlukan pautan rentang (span links). Memaksa satu induk akan menghilangkan maklumat; menyalin satu rentang di bawah berbilang induk merosakkan perakaunan jejak.
  • Apakah yang boleh dilepaskan oleh aplikasi semasa beban lampau? Trafik perniagaan mesti diteruskan. Baris gilir setempat yang terhad boleh menggugurkan telemetri selepas menghabiskan belanjawan memori dan cakera, tetapi kehilangan tersebut dikira mengikut perkhidmatan, penyewa, sebab, dan kelas persampelan. Jika sifar kehilangan telemetri diperlukan, penjejakan menjadi kebergantungan laluan perniagaan dan kontrak ketersediaan mesti diubah.

Rangka Kerja Jawapan 30 Saat

"Saya akan memisahkan penyebaran konteks, pengumpulan, keputusan jejak, dan storan pertanyaan. Pustaka berinstrumentasi mencipta rentang dan menyebarkan konteks W3C yang disahkan. Ejen setempat mengelompokkannya secara tak segerak dan menggunakan gelendong (spool) terhad, supaya platform pusat tidak pernah menyekat laluan permintaan. Get laluan serantau mengesahkan penyewa, menguatkuasakan skema dan kuota, serta menambahkan rentang pada strim tahan lasak yang dipisahkan mengikut ID jejak.

"Laluan biasa menggunakan persampelan kepala yang konsisten untuk mengurangkan kos huluan. Laluan kritikal memasuki kolam ekor penuh; semua rentang untuk satu jejak sampai kepada satu pemasang, yang menunggu punca berserta tetingkap kelonggaran, menggunakan belanjawan ralat, kependaman, dan garis dasar, serta merekodkan sama ada jejak tersebut tidak lengkap. Jejak yang disimpan dihantar ke storan objek untuk butiran kanonikal dan ke indeks panas yang disenarai putih untuk carian ID jejak dan penapis terhad. Saya akan menentukan saiz kedua-dua keadaan pra-persampelan dan storan yang disimpan, menurunkan taraf dengan menggugurkan jejak biasa berkeutamaan rendah terlebih dahulu, serta mengesahkan penyebaran, rentang lewat, persampelan berbias, pengasingan penyewa, dan pemulihan zon menggunakan jejak kenari (canary traces)."

Pecahan Mendalam Langkah demi Langkah

Langkah 1: Tentukan kontrak rentang dan API pertanyaan.

Rekod rentang mengandungi sekurang-kurangnya:

text
Span {
  tenant_id, trace_id, span_id, parent_span_id?, links[],
  service, operation, kind, start_time, end_time, status,
  resource_attributes, span_attributes, events[],
  observed_at, schema_version, trace_flags, tracestate?
}

Get laluan memperoleh tenant_id daripada pengesahan. Ia mengesahkan panjang dan format pengecam, menolak rekod bersaiz lampau, menormalkan medan semantik yang diluluskan, dan mengehadkan bilangan atribut, panjang nilai, bilangan peristiwa, bilangan pautan, dan jumlah bait. Ia menyimpan kedua-dua masa peristiwa dan observed_at: jam perkhidmatan membantu paparan garis masa, manakala masa pengumpul mendedahkan masalah kelewatan dan herotan jam (clock skew). SDK harus mengukur tempoh rentang setempat menggunakan jam monotonik (monotonic clock) walaupun susunan rentas hos masih memerlukan masa dinding (wall time) dan kelebihan bersebab.

Kontrak pertanyaan utama ialah:

text
GetTrace(tenant_id, trace_id)
SearchTraces(tenant_id, start, end, service?, operation?, status?,
             min_duration?, max_duration?, cursor?, limit?)

GetTrace mengembalikan rentang, pautan, dasar persampelan dan versi, first_observed_at, last_observed_at, dan amaran ketidaklengkapan. SearchTraces memerlukan julat masa yang terhad dan mengembalikan kursor berbanding ofset yang tidak terhad. Pengambilan butiran dan carian sekunder adalah laluan akses yang berbeza; satu rekod jejak yang luas tidak sepatutnya disalin ke dalam setiap indeks sekunder.

Langkah 2: Sebarkan konteks tanpa menjadikannya sebagai amanah.

Bagi HTTP, SDK mengekstrak dan menyuntik W3C traceparent, yang membawa versi, ID jejak, ID induk, dan bendera; tracestate membawa keadaan khusus vendor pilihan. Pengeluar mesej meletakkan medan penyebaran yang sama dalam metadata mesej. Penerima mengesahkan format sebelum menyertai jejak. Konteks yang tidak sah memulakan jejak baharu dan meningkatkan pembilang ralat penyebaran dan bukannya meracuni ruang kunci sedia ada.

Pada sempadan yang menghadap Internet atau rentas penyewa, perkhidmatan boleh memulakan jejak baharu secara sengaja dan melampirkan pautan ke konteks huluan yang diluluskan. Ini mengekalkan korelasi tanpa membenarkan pemanggil luaran memilih induk dalaman atau kawalan persampelan. Bagasi (baggage) ialah mekanisme nilai kunci yang disebarkan secara berasingan. Ia mesti disenarai putih, dihadkan saiznya, dan dibersihkan daripada rahsia atau data peribadi kerana ia disebarkan ke setiap lompatan hiliran.

Lakukan auto-instrumentasi pada pustaka umum HTTP, RPC, pangkalan data, dan baris gilir terlebih dahulu. Dapper menunjukkan sebab instrumentasi pustaka umum meningkatkan liputan dengan usaha aplikasi yang lebih rendah. Rentang tersuai kekal berguna untuk sempadan perniagaan, tetapi platform mengukur perkhidmatan dan laluan yang ketiadaan rentang pelayan atau klien yang dijangkakan. Kualiti jejak hanya selengkap instrumentasi dan sampel yang dikekalkan.

Langkah 3: Jauhkan pengumpulan daripada laluan permintaan aplikasi.

Rentang yang telah selesai memasuki penimbal terhad dalam proses dan dipam (flushed) dalam kelompok termampat ke ejen nod atau sidecar. Ejen ini mempunyai gelendong cakera terhad untuk gangguan pengumpul yang singkat, percubaan semula eksponen dengan variasi rawak (jitter), dan baris gilir mengikut keutamaan. Ia tidak pernah menunggu secara segerak untuk perakuan pusat sebelum aplikasi boleh menyelesaikan responsnya. Sebaik sahaja belanjawan setempat habis, ia menggugurkan telemetri biasa berkeutamaan rendah terlebih dahulu dan mengeksport pembilang yang menerangkan dengan tepat apa yang telah hilang.

Get laluan serantau tanpa keadaan (stateless) mengesahkan ejen, mengikat penyewa, menguatkuasakan kuota bait dan rentang, mengesahkan skema, dan menambahkan kelompok yang diterima ke strim tahan lasak yang direplikasi. Perakuan bermaksud strim serantau telah menerima kelompok secara tahan lasak, bukan bermakna carian sudah mengandunginya. Pengguna bersifat idempoten mengikut (tenant_id, trace_id, span_id) berserta versi rekod; penghantaran pendua mengemas kini metadata pemerhatian tetapi tidak menduplikasi rentang.

Strim ini dibahagikan mengikut cincangan stabil (tenant_id, trace_id). Ini memberikan satu jejak pemilik keputusan yang teratur tanpa memerlukan susunan rentang global. Bagi persampelan ekor pada skala yang lebih besar, lapisan pengumpul pertama boleh mengimbangi beban mengikut ID jejak ke dalam lapisan berkeadaan kedua. OpenTelemetry Collector mendokumenkan invarian yang sama: semua rentang untuk satu jejak mesti sampai ke tika (instance) persampelan ekor yang sama.

Langkah 4: Jadikan setiap sempadan kapasiti boleh dikira semula.

Sebelum persampelan, beban kerja menjana:

text
500,000 workflows/s × 15 spans/workflow = 7,500,000 spans/s
7,500,000 spans/s × 700 bytes/span = 5.25 GB/s
5.25 GB/s × 86,400 s = 453.6 TB/day raw

Ini adalah andaian beban kerja, bukan dakwaan pemampatan yang diukur. Platform yang menghantar semua rentang mentah ke penyampel ekor pusat mesti memperuntukkan laluan pengingesan 5.25 GB/s sebelum mengambil kira replikasi, overhed protokol, percubaan semula, herotan, dan ruang legar (headroom) pertukaran rosak (failover).

Andaikan laluan biasa menghasilkan 90% rentang dan menggunakan 2% persampelan kepala yang konsisten. Laluan kritikal menghasilkan 10% dan memasuki kolam ekor pada 100%:

text
ordinary: 7.5M × 90% × 2% = 135,000 spans/s
tail pool input: 7.5M × 10% = 750,000 spans/s
collector input: 885,000 spans/s × 700 bytes = 619.5 MB/s

Jika dasar ekor mengekalkan purata 10% daripada rentang calonnya, storan panas menerima 135,000 + 75,000 = 210,000 spans/s, atau 147 MB/s dan 12.7008 TB/hari sebelum pemampatan, replikasi, indeks, dan metadata objek. Tujuh hari panas bersamaan mentah adalah 88.9056 TB. Penanda aras dengan taburan atribut pengeluaran menentukan pemampatan dan bilangan nod; aritmetik ini hanya menetapkan batas bawah dan menunjukkan sempadan persampelan mana yang menanggung kos yang mana.

Langkah 5: Rawat persampelan ekor sebagai kekangan berkeadaan yang kritikal.

Pemasang menyimpan keadaan separa yang dikunci mengikut penyewa dan ID jejak: rentang unik, permulaan terawal, penamat terkini, keadaan punca selesai, keadaan ralat, tempoh semasa, kiraan bait, dan ketibaan terakhir. Jejak segerak layak untuk keputusan selepas puncanya tamat dan selang kelonggaran berlalu. Ia juga dipaksa untuk keputusan pada usia maksimum, kiraan rentang, atau kiraan bait. Aliran kerja yang panjang menggunakan dasar yang berasingan; jika tidak, satu jejak boleh mengikat memori selama-lamanya.

Urutan keputusan memperuntukkan kapasiti untuk aliran kritikal eksplisit, ralat, dan jejak berkependaman tinggi, kemudian menggunakan garis dasar kebarangkalian yang konsisten dalam belanjawan setiap perkhidmatan dan setiap penyewa. Peraturan global "simpan setiap ralat" bukanlah dasar yang terhad semasa insiden berlaku, apabila ralat mungkin mendekati 100%. Baldi token dan siling bait keras mengehadkan setiap kelas; tindak balas terhadap kehabisan ruang ialah dasar penurunan taraf yang kelihatan, bukan ranap keluar-dari-memori (out-of-memory).

Penyampel merekodkan cache keputusan untuk rentang lewat. Rentang lewat bagi jejak yang disimpan akan ditambah dan menandakan jejak tersebut telah dikemas kini. Rentang lewat bagi jejak yang digugurkan akan dibuang secara konsisten. Rentang yang tiba selepas cache tamat tempoh dikira sebagai yatim (orphaned); ia tidak boleh mencipta jejak satu rentang yang mengelirukan. Setiap jejak yang disimpan membawa complete, decision_reason, dan pembilang rentang lewat. Menambah selang kelonggaran meningkatkan kelengkapan tetapi meningkatkan penggunaan memori, kependaman keputusan, dan bilangan jejak yang terdedah kepada kegagalan penyampel.

Perangkap kritikal ialah saluran paip hibrid. Logik ekor hanya boleh memilih antara jejak yang sampai kepadanya. Jika penyampel kepala 2% membuang jejak biasa sebelum ralat berlaku di hiliran, peringkat ekor tidak dapat memulihkannya. Oleh itu, laluan yang memerlukan keputusan peka ralat yang dijamin mesti memasuki kolam ekor tanpa keputusan pengguguran huluan, atau menggunakan pencetus berasingan dan menerima hakikat bahawa ia tidak akan membina semula masa lalu.

Langkah 6: Simpan butiran kanonikal secara berasingan daripada indeks terhad.

Rentang yang disimpan dipadatkan ke dalam objek termampat yang tidak boleh diubah (immutable) yang dipisahkan mengikut penyewa dan masa, dengan manifes untuk setiap semakan jejak. Direktori ID jejak memetakan (tenant_id, trace_id) ke lokasi objek dan semakan terkini. Laluan ini menyediakan carian tepat. Objek jejak terkini boleh dicache, tetapi lapisan objek ialah sumber bina semula untuk indeks terbitan.

Indeks carian panas menyimpan satu baris ringkasan bagi setiap jejak: penyewa, ID jejak, perkhidmatan dan operasi punca, baldi mula, tempoh, status, set perkhidmatan terpilih atau cap jari, sebab persampelan, kelengkapan, dan penunjuk objek. Hanya medan yang disenarai putih menerima indeks sekunder. ID pengguna arbitrari, teks SQL, URL, dan nilai bagasi kekal dalam butiran yang dilindungi atau diredaksi; mengindeksnya secara lalai mewujudkan kekardinalan tanpa batas, pendedahan privasi, dan penguatan penulisan (write amplification).

Paparan kebergantungan perkhidmatan dan kependaman ialah agregat penstriman merentasi jejak yang disimpan dan mesti dilabelkan sebagai anggaran tersampel. Pemberat persampelan boleh menyokong beberapa anggaran kiraan tanpa bias apabila kebarangkalian diketahui, tetapi sampel ekor yang berbias ralat dan kependaman tidak mewakili perkadaran trafik secara automatik. Metrik kekal sebagai sumber untuk kadar peringkat armada yang tepat; jejak menjelaskan laluan bersebab individu.

Langkah 7: Asingkan penyewa dan tentukan tingkah laku kegagalan.

Get laluan menguatkuasakan bait sesaat, rentang sesaat, jejak separa serentak, keserampakan pertanyaan, dan bait yang disimpan bagi setiap penyewa. Kunci pemisahan menyertakan identiti penyewa, dasar penyulitan boleh memisahkan penyewa yang dikawal selia, dan kebenaran pertanyaan disemak sebelum sebarang carian indeks. Satu penyewa dengan jejak yang besar atau atribut berkekardinalan tinggi tidak boleh menyingkirkan keadaan penyampel penyewa lain.

Jika get laluan atau zon ketersediaan gagal, ejen mencuba semula titik akhir serantau yang lain dan menggunakan gelendong terhad mereka. Jika strim tahan lasak menjadi perlahan, kawalan kemasukan (admission control) menurunkan persampelan biasa dan menolak bait berlebihan sebelum pemasangan berkeadaan. Jika pemasang mati, strim memainkan semula pemisahannya; titik semak mempercepatkan pemulihan, manakala kunci rentang idempoten menyerap pendua. Semasa gangguan indeks, objek kanonikal terus disimpan dan tunggakan indeks meningkat. Pertanyaan tepat yang baru ditulis mungkin melaporkan "diterima, sedang diindeks" dan bukannya mengembalikan ralat tidak ditemui yang palsu.

Jika kolam ekor mengalami beban lampau, kurangkan garis dasar kebarangkalian secara beransur-ansur, hadkan jejak yang besar, dan kemudian beralih kepada dasar kepala deterministik untuk laluan yang terjejas. Kekalkan jejak kenari satah kawalan dan beberapa kapasiti ralat yang terhad. Pantau rentang yang diterima, digugurkan, dicuba semula, disingkirkan terlalu awal, lewat, yatim, dan diindeks mengikut penyewa, perkhidmatan, zon, dan dasar.

Langkah 8: Sahkan kebenaran data, bukan sekadar daya pemprosesan.

Ujian penyebaran meliputi pengepala yang sah, hilang, cacat, dan versi masa hadapan; sempadan rentas penyewa dan Internet; had bagasi; baris gilir; percubaan semula; fan-out; fan-in; dan pautan kelompok. Ujian pemasangan menyuntik jejak pendua, tidak teratur, ketiadaan induk, lewat, bersaiz lampau, dan tidak pernah selesai. Ujian persampelan membuktikan ketekalan keseluruhan jejak, siling belanjawan, keputusan kebarangkalian deterministik, dasar ralat dan kependaman, serta fakta bahawa pengguguran kepala huluan kekal tidak dapat dipulihkan.

Ujian beban mengekalkan saiz jejak berbentuk pengeluaran dan kecondongan penyewa. Ia mengukur overhed SDK, kehilangan ejen, kemasukan get laluan, kelambatan strim (stream lag), memori jejak aktif, kependaman keputusan, bait yang disimpan, kelambatan indeks, carian jejak, dan carian bertapis. Ujian kerosakan mengalih keluar zon, memulakan semula pemasang semasa pemisahan panas, menjeda storan objek, menghabiskan kuota penyewa, dan membina semula indeks panas daripada objek kanonikal.

Pancarkan aliran kerja kenari sintetik secara berterusan dengan graf yang diketahui merentasi setiap rantau. Berikan amaran jika rentang yang dijangkakan hilang, salasilah induk berubah, kesegaran carian melanggar 30 saat, atau carian ID jejak melanggar SLO-nya. Proses pengumpul yang sihat tidak membuktikan bahawa jejak adalah lengkap atau boleh dicari.

Contoh Jawapan yang Kukuh

"Mula-mula saya akan menyatakan bahawa jejak ialah graf bersebab bagi rentang, bukan sekadar sekumpulan baris log. Setiap rentang mempunyai ID jejak terikat penyewa, ID rentang, induk atau pautan, pemasaan, status, sumber, atribut terhad, peristiwa, dan masa diperhatikan. Perkhidmatan menyebarkan konteks W3C yang disahkan melalui HTTP atau metadata mesej. Pada sempadan yang tidak dipercayai, saya akan memulakan jejak dalaman baharu dan memautkannya, kerana konteks jejak ialah data korelasi, bukan kebenaran.

"Rentang meninggalkan laluan permintaan melalui penimbal terhad dalam proses dan ejen setempat. Ejen mengelompokkan, memampatkan, menggelendong secara ringkas ke cakera, dan menggugurkan data berkeutamaan rendah yang diukur dan bukannya menyekat trafik perniagaan. Get laluan serantau mengesahkan penyewa, menguatkuasakan skema dan kuota, serta menulis ke strim yang direplikasi. Pemisahan mengikut penyewa dan ID jejak menghantar setiap jejak ke satu pemasang dan menjadikan percubaan semula idempoten mengikut ID rentang.

"Beban kerja mentah ialah 7.5 juta rentang sesaat dan 5.25 GB/s. Saya tidak akan menghantar semua itu ke penyampel ekor secara tidak sengaja. Laluan biasa menggunakan 2% persampelan kepala yang konsisten. Kolam laluan kritikal 10% yang terkawal memasuki persampelan ekor pada 100%, jadi input pengumpul ialah 885,000 rentang/s, atau 619.5 MB/s. Jika kolam ekor menyimpan 10%, storan mendapat 210,000 rentang/s, kira-kira 12.7 TB/hari mentah sebelum indeks dan replika. Sempadan tersebut ialah input penanda aras, bukan hasil pemampatan yang dijanjikan.

"Pemasang adalah bahagian yang sukar. Ia memegang jejak separa, menunggu punca yang selesai berserta tetingkap kelonggaran, dan memaksa keputusan pada had usia, rentang, dan bait. Ia memperuntukkan kapasiti terhad untuk jejak kritikal, ralat, dan perlahan, kemudian mengisi belanjawan setiap perkhidmatan dengan garis dasar yang konsisten. Ia mencache keputusan untuk rentang lewat dan melabelkan jejak yang tidak lengkap. Pengguguran kepala huluan sebanyak 2% tidak dapat dipulihkan kemudian, jadi mana-mana laluan yang benar-benar memerlukan pengekalan peka ralat mesti memasuki kolam ekor tanpa disampel.

"Butiran jejak yang disimpan dihantar ke storan objek termampat dengan direktori ID jejak. Indeks panas yang berasingan menyimpan satu ringkasan jejak dan hanya medan perkhidmatan, operasi, status, tempoh, dan masa yang disenarai putih. Ini mengawal kekardinalan dan membolehkan indeks dibina semula. Semasa kegagalan, ejen menggunakan gelendong terhad, pemisahan strim dimainkan semula, penulisan objek diteruskan jika carian terhenti, dan beban lampau melepaskan garis dasar biasa sebelum kelas yang dilindungi. Saya akan mengesahkan sempadan konteks, rentang pendua dan lewat, bias persampelan dan siling, pengasingan penyewa bising, kehilangan zon, pembinaan semula, dan jejak kenari hujung ke hujung."

Kesilapan Biasa

  • Menyatakan "sampel 2%, kemudian simpan setiap ralat pada bahagian ekor" → peringkat pertama telah memadamkan 98% jejak calon, termasuk ralat terkemudian → hantar laluan yang dilindungi tanpa disampel ke kolam ekor atau longgarkan jaminan tersebut.
  • Mencincang rentang merentasi pengumpul tanpa ID jejak → satu penyampel ekor hanya melihat serpihan dan membuat keputusan berbias → halakan setiap rentang untuk (tenant, trace_id) ke pemilik keputusan yang sama.
  • Menunggu selama-lamanya untuk jejak lengkap → kerja tak segerak tidak mempunyai penanda penamat sejagat, jadi keadaan membesar tanpa batas → gunakan punca-berserta-kelonggaran, usia/saiz maksimum, dasar aliran kerja eksplisit, dan bendera tidak lengkap.
  • Merawat traceparent sebagai identiti atau kebenaran → pemanggil luaran boleh memilih medan korelasi → sahkan penyewa secara bebas dan mulakan jejak berpaut baharu pada sempadan amanah.
  • Meletakkan bagasi atau atribut arbitrari ke dalam setiap indeks → kekardinalan, penguatan penulisan, dan pendedahan data sensitif menjadi tidak terhad → senarai putihkan medan yang diindeks dan hadkan atau redaksi nilai yang disebarkan.
  • Menghantar rentang secara segerak ke pengumpul pusat → kegagalan telemetri meningkatkan kependaman aplikasi atau risiko ketersediaan → kelompokkan secara tak segerak melalui baris gilir setempat yang terhad dan dedahkan kehilangan yang diukur.
  • Menyimpan setiap rentang tetapi meninggalkan ringkasan jejak → carian perkhidmatan, tempoh, dan ralat mengimbas data butiran yang besar → simpan butiran kanonikal berserta satu baris ringkasan terhad yang boleh dibina semula bagi setiap jejak.
  • Memanggil sampel ekor yang berbias sebagai taburan trafik yang tepat → peraturan ralat dan kependaman sengaja melebihkan jejak luar biasa → terbitkan metadata persampelan dan gunakan metrik untuk kadar agregat yang tepat.
  • Menguji masa hidup pengumpul sahaja → gangguan konteks, rentang yang hilang, dan kelambatan indeks boleh kekal tidak kelihatan → jalankan kenari graf yang diketahui dan sahkan kelengkapan, persampelan, kesegaran, dan SLO pertanyaan.

Soalan Susulan dan Maklum Balas

Susulan 1: Produk kini memerlukan setiap jejak ralat sambil mengekalkan belanjawan pengingesan pusat yang sama. Apakah yang berubah?

Kedua-dua keperluan ini mungkin bercanggah. Sesuatu ralat selalunya hanya diketahui selepas rentang hiliran dilaksanakan, jadi penyampel kepala sumber tidak dapat menjamin pengekalan. Ukur kadar rentang mentah maksimum dan kapasiti ekor pusat. Jika belanjawan tidak dapat menerima semua laluan calon, kecilkan jaminan kepada set laluan kritikal yang terhad, tingkatkan kapasiti, atau tambah pencetus ralat aplikasi yang memulakan persampelan kadar tinggi pada masa hadapan sambil mengakui bahawa rentang yang digugurkan pada masa lalu tidak dapat dibina semula. "Sentiasa ralat" juga mesti mempunyai had siling bait kerana insiden boleh menukar hampir semua trafik menjadi ralat.

Susulan 2: Mesej menggunakan peristiwa daripada 10 jejak pengeluar. Induk manakah yang patut digunakan oleh rentang pengguna?

Tiada induk tunggal yang mewakili sepuluh punca bebas. Cipta rentang pengguna atau pemprosesan kelompok dalam aliran kerja yang sesuai dan lampirkan pautan ke sepuluh konteks pengeluar, tertakluk pada had kiraan pautan. Jika kelompok itu sendiri mempunyai satu konteks penghantaran, itu boleh menjadi induk manakala input individu kekal sebagai pautan. Kod pertanyaan dan visualisasi mesti menyokong DAG dan menunjukkan metadata pautan terpotong; menyalin rentang pengguna ke dalam sepuluh pepohon memesongkan tempoh dan storan.

Susulan 3: Penyampel ekor menyingkirkan jejak separa sebelum tetingkap keputusannya. Bagaimanakah anda menyahpepijatnya?

Bandingkan kiraan dan bait jejak aktif, taburan saiz jejak, kelewatan ketibaan, pemisahan panas, usia keputusan, pembilang penyingkiran awal, dan kecondongan setiap penyewa. Meningkatkan tetingkap menunggu boleh memburukkan lagi tekanan memori. Mula-mula hadkan saiz jejak lampau, asingkan penyewa yang bising, bahagikan pemisahan tanpa merosakkan afiniti jejak, dan kurangkan garis dasar biasa. Kemudian tambah kapasiti atau pendekkan tetingkap berdasarkan nilai rentang lewat yang diperhatikan. Jalankan dasar bayangan (shadow policy) untuk mengukur bagaimana perubahan yang dicadangkan mengubah ralat yang disimpan, jejak perlahan, dan kelengkapan.

Susulan 4: Carian terhenti selama dua jam, tetapi pengingesan dan storan objek kekal sihat. Apakah yang dikembalikan oleh API?

Teruskan menulis objek jejak kanonikal dan tunggakan perubahan indeks yang tahan lasak. GetTrace boleh menggunakan direktori ID jejak jika laluan tersebut kekal tersedia; carian sekunder melaporkan data as_of yang lapuk atau keadaan tidak tersedia sementara yang eksplisit. Ia tidak boleh melaporkan bahawa jejak yang baru diterima tidak wujud semata-mata kerana ringkasannya tidak diindeks. Selepas pemulihan, mainkan semula secara idempoten, bandingkan kiraan dan kelambatan, dan bina semula indeks daripada objek jika tunggakan rosak.

Susulan 5: Bagaimanakah anda membuktikan bahawa persampelan tidak menyembunyikan satu perkhidmatan bervolum rendah sepenuhnya?

Kekalkan belanjawan garis dasar minimum bagi setiap perkhidmatan atau setiap operasi sebelum berkongsi baki belanjawan global. Jejaki kebarangkalian dan sebab keputusan bersama setiap jejak yang disimpan, dan berikan amaran tentang perkhidmatan yang mempunyai trafik tetapi tiada jejak yang dikekalkan. Kenari sintetik mengesahkan laluan penuh tanpa bergantung pada kebarangkalian. Bandingkan liputan terbitan jejak dengan kiraan permintaan metrik; jika perkhidmatan menerima permintaan tetapi tidak menghasilkan rentang, bezakan antara instrumentasi yang hilang, kegagalan penyebaran, pengguguran kuota, keputusan kepala, keputusan ekor, dan kehilangan indeks.

Sumber awam

Soalan berkaitan

Alat temu duga berkaitan

Gunakan Jawab untuk jawapan reka bentuk sistem

Jelaskan keperluan terlebih dahulu, kemudian teruskan dengan skala, seni bina, pilihan komponen dan pertukaran (trade-off).

Lihat alat