Pembangun Berkongsi Cara Kreatif untuk Mengubah Sistem Tidak Dijangka menjadi Baris Gilir Mesej

Pasukan Komuniti BigGo
Pembangun Berkongsi Cara Kreatif untuk Mengubah Sistem Tidak Dijangka menjadi Baris Gilir Mesej

Komuniti teknologi telah sibuk dengan cerita-cerita mengenai pelaksanaan baris gilir mesej yang tidak konvensional, dipicu oleh perbincangan mengenai penyelesaian kejuruteraan yang kreatif. Walaupun baris gilir mesej tradisional seperti Amazon SQS atau Apache Kafka adalah pilihan standard, pembangun telah menemui alternatif yang mengejutkan berkesan di tempat-tempat yang paling tidak dijangka.

Pelayan Emel sebagai Baris Gilir Mesej

Salah satu contoh yang paling menarik datang daripada syarikat permulaan pada tahun 1990-an yang tidak mampu membeli penyelesaian pemesejan perusahaan yang mahal. Pasukan tersebut beralih kepada Microsoft Exchange Server sebagai sistem baris gilir mesej mereka. Pengeluar mesej menggunakan perpustakaan SMTP untuk menghantar emel, manakala pengguna menggunakan API Exchange untuk membaca mesej yang belum dibaca. Mereka menandakan mesej sebagai telah dibaca semasa pemprosesan dan memindahkan tugas yang telah selesai ke folder yang berbeza. Penyelesaian kreatif ini berfungsi dengan baik selama lima tahun, menawarkan pemeriksaan baris gilir yang mudah melalui klien emel standard dan bahkan membenarkan manusia mengendalikan baris gilir tertentu apabila diperlukan.

SMTP (Simple Mail Transfer Protocol) adalah protokol standard untuk menghantar emel, manakala API (Application Programming Interfaces) adalah set alat yang membenarkan program perisian berbeza berkomunikasi antara satu sama lain.

Contoh Baris Gilir Mesej Kreatif:

  • Pelayan emel ( Microsoft Exchange dengan SMTP/APIs )
  • Jadual pangkalan data dengan SELECT FOR UPDATE SKIP LOCKED
  • Baldi Amazon S3 (mahal dan tidak cekap)
  • Repositori Git dengan webhooks
  • Penghala rangkaian dengan paket UDP
  • Sistem fail dan paket ping

Pelajaran Mahal Amazon dengan S3

Perbincangan juga menyerlahkan kesilapan seni bina terkenal Amazon Prime Video , di mana mereka menggunakan baldi penyimpanan Amazon S3 untuk mengendalikan bingkai video individu untuk pemprosesan masa nyata. Pendekatan ini mencipta kos yang besar disebabkan oleh bilangan permintaan penyimpanan yang tinggi dan mencapai had perkhidmatan AWS . Pasukan akhirnya kembali kepada seni bina monolitik tradisional, menunjukkan bahawa walaupun gergasi teknologi boleh terjebak dalam perangkap kejuruteraan berlebihan dengan perkhidmatan awan.

Mereka benar-benar minum kool-aid serverless AWS dengan mendalam jika mereka fikir cara yang betul untuk mengalirkan video adalah beberapa perkhidmatan mikro yang mengakses bingkai individu pada S3 .

Jadual Pangkalan Data dan Protokol Rangkaian

Ramai pembangun berkongsi pengalaman dengan baris gilir mesej berasaskan pangkalan data menggunakan arahan SQL seperti SELECT FOR UPDATE SKIP LOCKED untuk mencegah pemprosesan berganda. Walaupun ini berfungsi untuk aplikasi yang lebih kecil, ia sering rosak di bawah trafik yang tinggi disebabkan oleh isu penguncian dan keadaan perlumbaan. Ada yang bahkan mencadangkan menggunakan penghala rangkaian dan paket UDP sebagai sistem penghantaran mesej berkapasiti tinggi, walaupun pendekatan ini mengorbankan jaminan penghantaran untuk kelajuan.

UDP (User Datagram Protocol) adalah protokol rangkaian yang menghantar data dengan cepat tetapi tidak menjamin bahawa semua mesej akan tiba atau tiba dalam susunan.

Repositori Git dan Seterusnya

Mungkin penyelesaian yang paling kreatif melibatkan penggunaan repositori GitLab dengan webhook sebagai sistem acara beratur. Perubahan akan mencetuskan webhook yang menambah data pada fail JSON , melakukan perubahan, dan mencetuskan proses hiliran. Walaupun digambarkan sebagai mengerikan dan mulia, ia menunjukkan sejauh mana pembangun akan pergi untuk menyelesaikan masalah dengan alat yang tersedia.

Pertukaran Utama:

  • Kos: Penyelesaian kreatif selalunya lebih murah pada mulanya
  • Kebolehpercayaan: Baris gilir yang dibina khas menawarkan jaminan yang lebih baik
  • Kebolehskalaan: Baris gilir tradisional mengendalikan trafik tinggi dengan lebih baik
  • Ciri-ciri: Baris gilir surat mati terbina dalam, metrik, logik cuba semula
  • Penyelenggaraan: Penyelesaian tersuai memerlukan lebih banyak kerja berterusan
Watak yang bersedia untuk bertindak mewakili minda penyelesaian masalah yang kreatif yang diperlukan apabila menggunakan kaedah luar biasa seperti GitLab sebagai barisan mesej
Watak yang bersedia untuk bertindak mewakili minda penyelesaian masalah yang kreatif yang diperlukan apabila menggunakan kaedah luar biasa seperti GitLab sebagai barisan mesej

Pelajaran dalam Kejuruteraan Kreatif

Cerita-cerita ini menyerlahkan prinsip penting dalam pembangunan perisian: kadang-kadang penyelesaian terbaik bukanlah yang paling jelas. Walaupun baris gilir mesej yang dibina khas menawarkan kebolehpercayaan dan ciri-ciri seperti baris gilir surat mati dan penskalaan automatik, alternatif kreatif boleh berfungsi dengan mengejutkan baik untuk kes penggunaan tertentu. Kuncinya adalah memahami pertukaran antara kos, kerumitan, dan keperluan.

Walau bagaimanapun, seperti yang dinyatakan oleh seorang ahli komuniti, menggulung baris gilir mesej sendiri sering membawa kepada mencipta semula roda, dengan buruk. Perkhidmatan moden seperti Amazon SQS mengendalikan pengurusan keadaan kompleks yang menjadikan baris gilir mesej boleh dipercayai, termasuk ciri-ciri seperti masa tamat keterlihatan mesej dan mekanisme cuba semula automatik.

Rujukan: Anything can be a message queue if you use it wrongly enough