Bagaimana sistem konten halaman Turbo diatur: skema, fakta, dan sedikit sejarah



Menurut TelecomDaily , hampir 30% pengguna Internet seluler di Rusia setiap hari mengalami masalah mengunduh situs. Namun, alasannya mungkin tidak hanya dalam cakupan tidak merata, tetapi juga terlalu banyak "berat" halaman.

Kami tidak dapat mempengaruhi kualitas koneksi, tetapi untuk membantu webmaster menyederhanakan konten situs, membuatnya lebih mudah - mengapa tidak? Jadi, teknologi halaman Turbo muncul di Yandex: sistem konten kami melewati semua yang diperlukan untuk penempatan, dan itu mengubah data ini menjadi bahan yang mudah dan cepat.

Bagaimana cara kerja sihir ini? Apa jalur data sebelum menjadi halaman Turbo penuh? Nama saya Stas Makeev, saya memimpin pengembangan halaman teknologi Turbo. Sekarang saya akan mencoba menjelaskan semuanya.

Tapi pertama-tama, ini sedikit ringkasan sehingga Anda tidak tersesat ketika saya mulai mempelajari detailnya.

Keuntungan utama sistem halaman Turbo adalah konversi data yang cepat dari bentuk aslinya ke bentuk akhir: bahan situs berita paling diminati pada menit-menit pertama setelah publikasi, dan kartu barang toko online harus segera diperbarui dan selalu sesuai dengan status ketersediaan saat ini. Parameter penting kedua adalah keandalan: sistem konten harus se-stabil mungkin, mampu bertahan dari gangguan server individual atau bahkan seluruh pusat data. Dan, tentu saja, penting untuk mencegah beban berlebih pada host mitra kami yang terhubung ke halaman Turbo. Artinya, ketika merancang layanan, perlu entah bagaimana menemukan keseimbangan antara kecepatan pemrosesan data dan peningkatan jumlah permintaan.

Pemilik situs memiliki beberapa cara untuk terhubung ke sistem:

  • . : YML — -, RSS – ;
  • API: ( );
  • : - .

Sistem konten menyimpan hasil kerjanya dalam penyimpanan khusus tipe "nilai kunci" (penyimpanan nilai kunci atau penyimpanan KV), di mana kuncinya adalah URL dari situs asli, dan nilai menyimpan konten halaman Turbo. Segera setelah data memasuki penyimpanan KV ini, halaman Turbo berikutnya segera tersedia untuk pencarian pengguna, dan dalam layanan Yandex dokumen yang sesuai memiliki ikon khusus dengan roket. Juga, untuk mempercepat pekerjaan, kami menyimpan gambar dan video dalam CDN kami.

Skema kerja umum yang sangat sederhana terlihat seperti ini:



Bagaimana semua ini dimulai


Versi pertama dari sistem konten disusun dengan cukup sederhana: setiap beberapa menit, sesuai jadwal, program yang sama diluncurkan pada server cloud internal Yandex. Itu terdiri dari beberapa langkah, masing-masing dijalankan berikutnya setelah data sebelumnya siap untuk semua umpan yang kita tahu:

  • Daftar umpan RSS telah diunduh, parser dokumen diluncurkan;
  • daftar gambar diekstraksi dari hasil parser;
  • gambar belum di-cache dimuat ke CDN;
  • dokumen yang diproses dituangkan ke dalam repositori KV.

Skema semacam itu bekerja dengan sempurna ketika sistem menangani beberapa ribu umpan RSS agak ringan dari kantor berita (secara keseluruhan - informasi tentang kurang dari 100.000 dokumen). Tetapi dengan meningkatnya jumlah feed, masalah dengan cepat ditemukan: setiap langkah membutuhkan waktu yang semakin lama, penundaan antara tampilan dokumen baru di sumber asli dan tampilan dalam mode Turbo meningkat.

Kami berhasil mengendalikan situasi dengan bantuan berbagai trik: pertama-tama, kami memilih langkah pertama (mengunduh RSS feed + parser dokumen) ke dalam proses terpisah. Yaitu, ketika satu sedang memproses gambar untuk iterasi sebelumnya, proses lainnya sudah mengunduh feed untuk yang berikutnya. Setelah beberapa waktu, menjadi jelas: dalam bentuk ini, sistem ini sangat sulit untuk diukur. Kami membutuhkan sesuatu yang pada dasarnya baru.

Memproses RSS, API, dan YML dalam sistem konten baru


Masalah utama dari sistem konten lama adalah bahwa semua data diproses dalam satu bagian: tidak ada transisi ke langkah berikutnya sampai setiap dokumen melewati yang sebelumnya. Untuk menghilangkannya, diputuskan untuk membangun saluran pipa tertentu: biarkan umpan dan dokumen individual diproses sebebas mungkin. Semua langkah dipisahkan menjadi kubus layanan terpisah - di tingkat atas, skema berubah menjadi seperti ini:



  • kubus pertama mengunduh umpan RSS dan meneruskannya;
  • yang kedua - mengambil feed satu per satu, mem-parsing isinya. Di pintu keluar - pisahkan dokumen;
  • yang ketiga - mengambil dokumen satu per satu, memproses gambar dan video, merekam semua yang ada di penyimpanan KV.

Umpan yang sama dapat didaftarkan tidak hanya di Turbo, tetapi juga di layanan kami yang lain - di Berita atau di Pasar, misalnya. Jika masing-masing dari mereka mengunduh data sendiri, beban pada server webmaster akan beberapa kali lebih tinggi daripada yang diizinkan. Bagaimana benar? Unduh umpan satu kali, dan kemudian distribusikan konten ke semua layanan konsumen - Yandex.Robot melakukan ini. Kami menggunakan layanannya untuk mengunduh konten: kami mengambil dari Yandex.Webmaster daftar RSS dan YML feed terdaftar di Turbo, transfer ke Robot dan berlangganan hasil unduhan.

Pada data yang diterima, mulai parser. Untuk jaga-jaga, izinkan saya mengingatkan Anda: umpan RSS hanyalah sebuah file dalam format ".XML", dapat diakses oleh URL statis di host mitra. File ini berisi informasi tentang semua pembaruan di situs - dokumen mana yang baru, yang diubah. Hanya informasi paling mutakhir dalam beberapa jam terakhir adalah umpan ideal: tidak lebih dari 100 dokumen per beberapa ratus kilobyte.

Gigitan realitas: terkadang file ada di dalam umpan untuk waktu yang sangat lama dan tidak pernah berubah. Bagaimana menghindari pemrosesan ulang dalam kasus seperti itu? Kami menghitung hash dari setiap dokumen, menyimpannya di database, dan tidak melakukan apa pun hingga hash berubah.

Memproses umpan YML dan API dari sudut pandang sistem konten praktis tidak berbeda dari berinteraksi dengan RSS: untuk YML, kami memulai parser lain, dan data yang dikirimkan melalui API diperoleh langsung dari Yandex.Webmaster.



Pemrosesan gambar dan video


Dokumen yang diterima pada output parser hampir siap untuk ditulis ke penyimpanan KV. Satu-satunya hal yang harus dilakukan sebelum mengirim adalah untuk memproses gambar dan video: cache di CDN dan ganti tautan dalam dokumen. Di sini kita kembali ke Robot untuk bantuan.

Pertama-tama, kami memeriksa setiap gambar dan video: apakah mereka ada di CDN? Jika semuanya sudah di-cache, ganti tautan dan kirim dokumen yang diperbarui ke repositori KV. Jika tidak:

  • kami mengirim daftar URL yang hilang ke Robot untuk perencanaan dan pengunduhan;
  • dokumen itu sendiri dalam penyimpanan sementara, jadi setelah beberapa saat coba periksa lagi.

Kubus lain saat ini menerima hasil unduhan, mengunggah data ke CDN dan memperbarui basis data.

Dalam skema seperti itu, masalah penting lain yang berkaitan dengan perencanaan dapat diselesaikan: robot memahami seberapa cepat mungkin untuk mengunduh data dari host yang berbeda, dan tidak memungkinkan kelebihan beban.



Lintasan khas yang diikuti oleh dokumen baru:

  • Dokumen muncul di umpan.
  • Robot mengunduh feed;
  • parser menemukan dokumen baru dan mengirimkannya lebih lanjut;
  • kami memeriksa bahwa gambar-gambar dari dokumen tidak disebutkan dalam database, memesan unduhan, dokumen dikirim ke penyimpanan sementara (Penundaan). Sementara dokumen ada di sana, Robot mengunduh gambar, mereka di-cache di CDN, dan tautan muncul di database;
  • , CDN, KV-.
  • : , Delay.


Ada cara lain untuk terhubung ke halaman Turbo, yang webmaster tidak perlu melakukan apa pun - Autoparser. Itu membangun halaman Turbo berdasarkan sumber data dari situs konten. Anda dapat terhubung, melihat contoh halaman jadi, mengkonfigurasi iklan dan analitik di Yandex.Webmaster.

Kesulitan utama yang dihadapi AutoParser adalah untuk mengenali dengan markup HTML informasi dasar apa yang harus digunakan ketika membangun halaman Turbo. Untuk melakukan ini, kami memiliki beberapa proses offline yang mencoba memahami dengan tepat cara mem-parsing host tertentu. Saya akan fokus pada dua yang utama:

  • Pertama RSS- HTML- . — , RSS- ( ), . , . CatBoost , , . , , , . , . , , , HTML . ? : . – , .
  • : .. , , , , — . — .

Ngomong-ngomong, satu lagi kendala sering - banyak situs memblokir kemampuan untuk mengunduh gambar dengan robot di robots.txt. Sayangnya, tidak mungkin untuk mengatasi masalah ini, dan Autoparser tidak tersedia untuk halaman tersebut.

Akibatnya, skema lengkap sistem konten terlihat seperti ini:



Sistem ini ternyata dapat diskalakan dengan baik: sekarang sejumlah besar sumber daya digunakan untuk melayani basis data, autoparser, dan komponen lain dari sistem (hanya kubus yang bertanggung jawab untuk penguraian RSS, YML dan API menggunakan lebih dari 300 prosesor core), dan dalam hal peningkatan beban tidak akan terlalu sulit untuk menghubungkan kapasitas tambahan.

Terima kasih sudah membaca sampai akhir! Saya harap, setelah materi ini, dalam karya halaman Turbo Anda akan mendapatkan lebih banyak logika dan lebih sedikit sihir (omong-omong, di sini- bahkan lebih detail tentang halaman Turbo). Jika ada sesuatu yang masih tidak dapat dipahami, tulis di komentar - kami masih berhubungan.

All Articles