Topik temu duga representatif

Temu Duga Backend: Bagaimanakah Anda Menyebarkan Konteks Surih Merentasi Mesej Tak Segerak?

BackendSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Satu permintaan HTTP menerbitkan mesej untuk pemprosesan tak segerak. Bagaimanakah anda menyebarkan Konteks Surih secara selamat merentasi percubaan semula, kelompok, dan penyewa?

Gesaan dan kes penggunaan

Satu permintaan HTTP menerbitkan mesej untuk pemprosesan tak segerak. Bagaimanakah anda menyebarkan Konteks Surih secara selamat merentasi percubaan semula, kelompok, dan penyewa? Gesaan ini sesuai untuk temu duga backend, kebolehlihatan (observability), dan pemesejan. Matlamatnya adalah korelasi bersebab merentasi sempadan pelaksanaan tanpa menganggap konteks permintaan sebagai kebenaran kekal atau data perniagaan.

Perkara yang dinilai oleh penemu duga

  • Sama ada anda memahami sempadan traceparent, tracestate pilihan, dan penyebar (propagator).
  • Sama ada span pengeluar, pemprosesan mesej, dan percubaan semula mempunyai hubungan induk yang jelas.
  • Sama ada anda mengendalikan mesej berkelompok, penggunaan tertangguh, dead letter, persampelan, dan luput.
  • Sama ada anda menghalang baggage sensitif, data rentas penyewa, dan isyarat kepercayaan palsu daripada tersebar.

Soalan untuk dijelaskan sebelum menjawab

Sahkan pengangkutan, ketahanan mesej, tingkah laku kelompok dan percubaan semula, serta sama ada pengguna merentasi perkhidmatan atau domain kepercayaan. Jelaskan sama ada hubungan yang diingini adalah untuk satu operasi perniagaan, satu mesej, atau satu kelompok. Tanya tentang persampelan, pengekalan, pengasingan penyewa, dan sama ada pengeluar luar boleh menyuntik konteks. Akhir sekali, tentukan pengendalian dead-letter dan sama ada main semula manual mencipta cabang surih baharu.

Kerangka jawapan 30 saat

“Perkhidmatan masuk mengekstrak dan mengesahkan pengepala penyebaran, kemudian menyuntik konteks surih minimum semasa menerbitkan mesej. Pengguna mengekstraknya, mencipta span pengguna bebas, dan mewakili percubaan semula, kelompok, dan dead letter secara eksplisit. Merentasi domain kepercayaan, saya hanya menerima medan terkawal dan menggugurkan baggage sensitif; dasar platform mentadbir persampelan dan luput, manakala main semula menggunakan ID surih baharu yang dipautkan kepada yang asal.”

Jawapan mendalam langkah demi langkah

  1. Tentukan sempadan: Modelkan kemasukan HTTP, penerbitan mesej, pengangkutan, dan penggunaan sebagai unit pelaksanaan berasingan dengan pemilik suntik dan ekstrak yang jelas.
  2. Pilih pembawa (carrier): Letakkan format penyebaran standard dalam pengepala mesej atau metadata terkawal; jangan sekali-kali menyalin keseluruhan permintaan, token identiti, atau baggage sewenang-wenangnya ke dalam mesej tahan lama.
  3. Modelkan span: Penerbit mencipta span pengeluar dan pengguna mencipta span pengguna; untuk kelompok, rekod pautan mesej dan bukannya berpura-pura kelompok tersebut adalah satu permintaan tunggal.
  4. Kendalikan percubaan semula dan dead letter: Berikan setiap percubaan span dan atribut percubaannya sendiri sambil mengekalkan pautan peristiwa asal; pengendalian dead-letter dan main semula mencipta cabang baharu.
  5. Tadbir keselamatan: Hadkan suntikan rentas domain, sanitasi medan yang dikawal pengguna, asingkan label penyewa, dan hadkan persampelan, pengekalan, serta saiz konteks.

Contoh jawapan berkualiti tinggi

Saya akan mengasingkan konteks standard, korelasi perniagaan, dan sempadan keselamatan. Titik masuk HTTP hanya mengekstrak pengepala penyebaran yang terbentuk dengan betul, mengesahkan versi dan panjang, serta mencipta span pelayan. Semasa menerbitkan, span pengeluar menyuntik konteks surih minimum ke dalam metadata mesej manakala ID peristiwa perniagaan yang tidak boleh diubah disimpan secara berasingan kerana kedua-duanya mempunyai tujuan yang berbeza. Pengguna mengekstrak metadata dan mencipta span pengguna; setiap operasi hiliran mendapat span anak tersendiri. Kelompok tidak dipaksa di bawah mesej pertama sebagai satu induk: saya merekodkan span kelompok dan pautan mesej yang terhad. Setiap percubaan semula menambah atribut percubaan dan backoff sambil mengekalkan ID peristiwa. Sebaik sahaja mesej memasuki baris gilir dead-letter, main semula manual mencipta surih baharu yang dipautkan kepada yang asal supaya pelaksanaan baharu tidak menyamar sebagai sejarah lama. Baggage daripada penyewa lain atau pengeluar luar digugurkan secara lalai; hanya medan berkepekaan rendah yang diluluskan oleh platform dibenarkan merentasi sempadan. Saya akan mengesahkan saiz konteks, kegagalan pengekstrakan, korelasi mesej-ke-pengguna, keterlihatan percubaan semula, dan kebocoran rentas penyewa dengan ujian dan metrik pengeluaran.

Kesilapan biasa

  • Menganggap ID surih sebagai kelayakan pengesahan atau kunci kedapulan (idempotency) perniagaan.
  • Mengekalkan pengepala HTTP penuh, input pengguna, atau token dalam mesej tahan lama.
  • Meletakkan penggunaan kelompok dan semua percubaan semula di bawah satu span, yang memesongkan masa.
  • Menggunakan semula surih lama semasa main semula dead-letter, menyembunyikan percubaan baharu.
  • Membincangkan panggilan SDK tanpa domain kepercayaan, persampelan, pengekalan, dan tadbir urus saiz.

Soalan susulan dan jawapan

Satu mesej dicuba semula sebanyak sepuluh kali. Berapakah bilangan span yang sepatutnya wujud?

Cipta span yang boleh dibezakan untuk setiap percubaan pemprosesan sebenar dan pautkannya dengan nombor percubaan, ID peristiwa, dan operasi pengeluar asal. Ini mendedahkan kependaman bagi setiap percubaan tanpa melaporkan sepuluh pelaksanaan sebagai satu.

Bagaimanakah anda memilih induk untuk satu kelompok?

Cipta span pengguna untuk kelompok tersebut, kemudian gunakan pautan terhad atau span anak untuk mesej yang memerlukan analisis. Jangan sewenang-wenangnya memilih mesej pertama sebagai induk kelompok; kekalkan statistik peringkat kelompok dan ID korelasi apabila persampelan adalah terhad.

Bolehkah pelanggan luar menyuntik tracestate?

Terima medan yang mematuhi protokol hanya sebagai input yang tidak dipercayai. Merentasi sempadan kepercayaan, hadkan panjang, kunci, dan pemajuan, buang medan sensitif atau berkardinaliti tinggi, dan jangan sekali-kali menggunakannya untuk kebenaran.

Bagaimanakah main semula dead-letter manual kekal boleh dikesan?

Cipta surih dan span pelaksanaan baharu untuk main semula, merekodkan ID mesej asal, pengendali, sebab, dan kelompok main semula. Pautkan surih lama dan baharu melalui hubungan terkawal sambil mengekalkan kegagalan asal yang tidak boleh diubah.

Sumber awam

Soalan berkaitan