스크립트
00:00:00SQS, Kafka, dan RabbitMQ bisa disingkirkan karena sekarang Anda bisa mengelola antrean secara langsung
00:00:05di dalam Postgres dengan PGMQ. Dan saya sudah bisa menebak orang-orang akan bilang, tapi itu tidak berskala besar.
00:00:11Padahal sebenarnya bisa, karena Postgres mampu menangani jutaan baris dan
00:00:15ribuan permintaan per detik dengan mudah. Jadi, jika Anda ingin menjaga infrastruktur tetap sederhana,
00:00:20hari ini kita akan menjelajahi pembuatan aplikasi terdistribusi bVolume tinggi dengan PGMQ.
00:00:30Baiklah, tanpa buang-buang waktu, kita langsung saja ke demo. Saya telah menyiapkan sebuah proyek
00:00:34dengan Docker dan menginstal PGMQ. Anda bisa menggunakannya dalam dua variasi, yaitu khusus SQL atau menggunakan salah satu
00:00:41pustaka klien resmi seperti Rust atau Python, ditambah sejumlah pustaka komunitas seperti Ruby atau berbagai
00:00:47varian TypeScript. Karena kita tidak akan pernah sepakat soal bahasa, saya akan menjalankan demo ini dengan
00:00:52opsi khusus SQL saja. Mari kita mulai dengan membuat antrean baru. Kita jalankan select pgmq.create lalu masukkan
00:00:58nama antreannya. Setiap antrean di sini adalah tabelnya sendiri. Jika kita melihat langsung ke dalam database,
00:01:04kita dapat melihat bahwa tabel baru tersebut kini sudah ada. Kita kemudian dapat mengirim pesan ke antrean dengan menentukan nama antrean,
00:01:09lalu pesannya sebagai JSON. Anda juga bisa menyertakan jeda waktu jika diinginkan. Jadi pesan akan dimasukkan ke dalam
00:01:15antrean, tetapi tidak dapat diproses selama, katakanlah, lima detik. Oke, sekarang kita sudah memiliki pesan di dalam antrean.
00:01:20Mari kita proses pesan tersebut. Kita bisa melakukannya dengan perintah read. VT adalah timeout visibilitas. Di sini hal itu berarti
00:01:26pesan yang Anda baca akan disembunyikan selama 30 detik agar tidak ada proses lain yang dapat mengambilnya.
00:01:31Beginilah cara PGMQ menjamin pengiriman tepat satu kali (exactly-once delivery). Quantity adalah jumlah pesan yang ingin kita
00:01:38baca. Dan jika pesan tersebut tidak dihapus atau diarsipkan dalam kurun waktu tersebut, pesan akan menjadi terlihat kembali. Dan untuk melakukan
00:01:44hal itu, Anda dapat menjalankan archive, yang menghapus dari antrean dan menambahkannya ke tabel arsip, atau cukup
00:01:49dengan menjalankan delete. Sebagai contoh, di sini saya menghapus pesan dengan ID dua. Sebagai catatan samping, jika Anda merasa video ini
00:01:54bermanfaat, Anda bisa membantu kami secara besar-besaran dengan berlangganan saluran ini. Hal itu membantu kami terus membuat konten gratis
00:01:59untuk membantu sebanyak mungkin pengembang. Baiklah, mari kita lakukan uji stres pada PGMQ. Pertama, saya akan menambahkan 100.000 baris
00:02:06ke dalam antrean. Dan ini membutuhkan waktu sekitar 0,4 detik. Sekarang saya akan meluncurkan 100 pekerja (worker) untuk masing-masing memproses pekerjaan dalam
00:02:13kelompok berisi 10 dan melihat berapa lama waktu yang dibutuhkan untuk membaca semuanya. Di sini, yang dilakukan oleh setiap pekerja hanyalah membaca
00:02:18pesan, mencatat apa yang dibaca, lalu menghapusnya. Tentu saja, Anda mungkin ingin melakukan hal lain dengan data tersebut.
00:02:23Namun saya hanya ingin menguji performa PGMQ secara langsung di sini. Dan proses itu memakan waktu sembilan detik.
00:02:29Setiap pekerja memproses rata-rata 111 pesan per detik. Jadi jika digabungkan, sekitar 11.100 pesan per detik.
00:02:37Saya sengaja membatasi wadah Docker ke dua CPU dan memori sebesar dua gigabita, yang lumrah untuk layanan langsung
00:02:44(live service). Sekarang, seperti yang saya sebutkan sebelumnya, Anda juga dapat menggunakan pustaka klien untuk berinteraksi dengan PGMQ.
00:02:49Menggunakan TypeScript dengan Prisma, kita dapat membuat antrean, mengirim pesan, membaca sekumpulan pesan, dan Anda juga
00:02:55dapat melakukan hal yang sama dengan Python. Jadi, jika Anda tidak ingin ketergantungan tambahan, Anda benar-benar dapat menjalankan
00:03:01antrean dalam skala besar di dalam Postgres dengan PGMQ. Dan kita bisa melangkah lebih jauh dengan mengganti sebanyak mungkin
00:03:08bagian dari tumpukan teknologi (stack) dengan Postgres, yang saya bahas di video ini.
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기