𝗠𝗲𝘁𝗮𝗱𝗮𝘁𝗮 𝗩𝗶𝗱𝗲𝗼 𝗥𝗶𝗻𝗴𝗸𝗮𝘀 𝗱𝗲𝗻𝗴𝗮𝗻 𝗣𝗿𝗼𝘁𝗼𝗯𝘂𝗳

Worker ingest kami mengambil ribuan video populer setiap dua jam. Kami mengirimkan data ini ke tiga layanan: layanan pemeringkatan, cache warmer, dan tugas analitik.

Untuk waktu yang lama, kami menggunakan JSON untuk memindahkan data ini. Semuanya berjalan lancar sampai akhirnya terjadi kegagalan.

Satu rekaman video berukuran 2,4 KB dalam JSON. Memindahkan 40.000 rekaman ke tiga layanan berbeda berarti memindahkan 280 MB teks redundan setiap dua jam. Hal ini membuang-buang bandwidth dan memperlambat worker PHP kami.

Kami beralih ke Protocol Buffers (Protobuf). Berikut adalah alasan dan bagaimana hal itu mengubah sistem kami.

Tiga Masalah Utama dengan JSON:

Bagaimana Protobuf Mengatasinya:

Protobuf menggunakan nomor field alih-alih nama. Ia menggunakan file .proto sebagai single source of truth. File ini menghasilkan kode untuk PHP, Python, dan Go. Jika Anda mengubah skema, kode akan gagal dikompilasi. Hal ini mengubah bug runtime menjadi error saat kompilasi.

Hasilnya:

Kami mengukur perubahan ini selama satu minggu:

Kapan harus menggunakan Protobuf:

Jangan gunakan untuk segalanya. Jika payload Anda kecil atau Anda ingin manusia dapat membacanya dengan mudah, tetaplah gunakan JSON. Gunakan Protobuf untuk lalu lintas internal bervolume tinggi di mana kecepatan dan kontrak yang ketat adalah yang terpenting.

API publik kami masih menggunakan JSON. Layanan internal kami menggunakan Protobuf.

Sumber: https://dev.to/ahmet_gedik778845/compact-video-metadata-serialization-with-protobuf-across-php-services-19lk