Rumah >pembangunan bahagian belakang >tutorial php >Membandingkan Beanstalkd, IronMQ dan Amazon SQS
mata utama
Sebarang maklumat yang diterangkan dalam artikel ini betul pada masa penulisan dan tertakluk kepada perubahan tanpa notis.
Apakah giliran mesej?
Quote membolehkan anda menyimpan metadata supaya pekerjaan dapat diproses kemudian. Mereka boleh membantu membangunkan SOA (seni bina berorientasikan perkhidmatan) dengan menyediakan fleksibiliti untuk menangguhkan tugas untuk memisahkan proses. Jika digunakan dengan betul, beratur boleh meningkatkan pengalaman pengguna laman web dengan mengurangkan masa beban.
Kelebihan Mesej Gilir:
async: Baris dengan segera dan lari kemudian.
LOAD:
Setiap pekerjaan dalam barisan mesti menunggu sebaliknya sebelum ia dapat diproses. Sekiranya pekerjaan yang ditetapkan, ia akan menjejaskan setiap pekerjaan berikutnya.apa-apa proses yang memakan masa boleh dimasukkan ke dalam barisan:
Anda juga boleh menggunakan beratur dengan cara yang kreatif - kunci pekerjaan supaya hanya satu pengguna yang dapat mengakses maklumat pada satu masa.
Service
Anda boleh menggunakan banyak perkhidmatan untuk melaksanakan beratur mesej, dan artikel ini menggariskan perbezaan antara Beanstalkd, IronMQ, dan Amazon SQS.
Beanstalkd
Beanstalkd adalah "... giliran pekerjaan yang mudah dan cepat". Ia dikeluarkan sebagai perisian sumber terbuka di bawah lesen MIT. Ia mempunyai dokumentasi yang baik dan unit diuji dan boleh dimuat turun untuk dijalankan pada pelayan anda sendiri secara percuma. Senibina ini meminjam dari Memcached, yang direka khas untuk beratur mesej.
Jawatan di SitePoint berjudul Beat the Giants dengan Beanstalkd, yang ditulis oleh pengarang Dave Kennedy, mengandungi maklumat tentang cara memulakan dengan Beanstalkd dan Ruby.
IRONMQ
IRONMQ adalah perkhidmatan web RESTful yang diuruskan. Tahap percuma disediakan untuk pemaju, dan banyak peringkat langganan lain boleh digunakan oleh aplikasi komersil.
sqs
Amazon SQS adalah penyelesaian hosting yang murah untuk melaksanakan beratur mesej. Ia adalah sebahagian daripada Amazon Web Services (AWS). Amazon menyediakan peringkat percuma untuk menilai perkhidmatan rangkaiannya, termasuk SQS.
Tetapan pelayan
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
自托管 | 远程托管 | 远程托管 |
Beanstalkd
Jalankan pada Linux dan Mac OS X. Sila baca arahan pemasangan di laman web Beanstalkd untuk maklumat terperinci tentang cara mendapatkannya berfungsi pada sistem anda. Pelayan Beanstalkd tidak tersedia untuk Windows.
IRONMQ dan SQS
IRONMQ dan Amazon SQS adalah perkhidmatan rangkaian berasaskan awan. Daripada menyediakan aplikasi pada pelayan anda, anda hanya perlu mendaftarkan akaun dan menyediakan barisan.
Perjanjian Tahap Perkhidmatan (SLA)
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
无 | 每月 99.95% | 无 |
Beanstalkd
Beanstalkd adalah pelayan yang dihoskan sendiri, adalah tanggungjawab anda untuk memastikan ketersediaannya.
IRONMQ
Iron.io mempunyai perjanjian tahap perkhidmatan dengan peratusan uptime semasa kitaran pengebilan bulanan sekurang -kurangnya 99.95%. Pakej Pro Platinum mereka ($ 2450 sebulan) mempunyai terma kontrak tersuai, termasuk perjanjian tahap perkhidmatan. Mereka menyediakan bayaran balik mata perkhidmatan.
sqs
Amazon tidak menyediakan perjanjian tahap perkhidmatan tertentu untuk SQS. Mereka menawarkan perkhidmatan sokongan yang boleh meliputi SQS untuk bayaran tambahan.
Arkitek
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
PUSH(套接字) | HTTP 网络服务 | HTTP 网络服务 |
Beanstalkd
Berkomunikasi melalui soket push, menyediakan komunikasi segera antara penyedia dan pekerja.Apabila pembekal memupuk pekerjaan, ia boleh disimpan dengan segera jika pekerja disambungkan dan siap. Tugas akan dikekalkan sehingga pekerja menghantar respons (padam, dikebumikan, dan lain -lain).
IRONMQ
SQS adalah perkhidmatan Web Restful yang diuruskan.IRONMQ menyokong fungsi seperti push. Pelanggan boleh dipanggil apabila pembekal menyertai kerja ke barisan. Biasanya, anda ingin menggunakan perkhidmatan RESTful standard untuk pekerjaan yang masuk dan menafikan dan bukannya kaedah push.
sqs
SQS adalah perkhidmatan rangkaian yang diuruskan.SQS tidak menyokong Push. Anda mesti mengundi secara berkala untuk memeriksa sama ada terdapat pekerjaan dalam barisan.
SQS boleh menggunakan tinjauan panjang yang dipanggil MESSAGE MESSAGE WAKTU WAKTU (Lalai: 0 saat, maksimum: 20 saat) untuk memastikan sambungan dibuka sementara pekerja menunggu pekerjaan. Ini bermakna permintaan yang lebih sedikit dan masa pembukaan soket yang lebih lama.
Perpustakaan klien
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
开源 | 官方 | 官方 |
Beanstalkd
Terdapat banyak perpustakaan klien beanstalkd sumber terbuka yang terdapat dalam banyak bahasa pengaturcaraan. Ini adalah projek mandiri Beanstalkd.
IRONMQ
Perpustakaan klien IronMQ disediakan oleh Iron.io dan boleh dimuat turun dari pusat pembangunan.Anda juga boleh menggunakan Perpustakaan Klien Beanstalkd dengan IronMQ jika anda mahu fleksibiliti beralih antara kedua -dua perkhidmatan; Anda juga mungkin perlu melaksanakan perintah
oAuth secara manual untuk menyambung ke perkhidmatan.
sqs
Perpustakaan klien AWS termasuk perpustakaan klien SQS. Ini disediakan oleh Amazon dan boleh didapati dalam banyak bahasa pengaturcaraan.
Antara muka pengurusan
Beanstalkd
Antara muka pengurusan grafik tidak diedarkan secara lalai. Terdapat beberapa projek sumber terbuka di halaman alat Beanstalkd yang boleh membantu dengan debugging dan pengurusan.
IRONMQ
Panel IronMQ menguruskan beratur. Ia mengandungi tutorial berguna yang menerangkan cara menyediakan barisan dan menunjukkan kepada anda cara menambah pekerjaan (IronMQ: mesej) ke barisan melalui curl.
Antara muka ini membolehkan anda menguruskan beratur di laman web yang didorong oleh Ajax. Anda boleh membuat, membaca, dan memadam pekerjaan, melihat maklumat sejarah, dan menguruskan konfigurasi giliran dari paparan papan pemuka.
sqs
Konsol Pengurusan AWS membolehkan anda menguruskan SQS. Antara muka dibina di atas protokol tanpa statistik, jadi anda perlu menekan butang Refresh untuk mendapatkan maklumat terkini.
Anda boleh membuat, membaca, dan memadam Pekerjaan (SQS: Mesej) dan menguruskan konfigurasi giliran.
berlebihan
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
客户端 | 基于云 | 基于云 |
Beanstalkd
redundansi dikendalikan di sisi klien, dan jika pelayan turun, anda akan kehilangan pekerjaan anda.
Beanstalkd tidak mengandungi pilihan untuk menyimpan pekerjaan dalam balak binari. Anda mesti memulakan Beanstalkd dengan pilihan -B, tetapi barisan pemulihan adalah tugas manual yang memerlukan akses ke cakera pelayan.
IRONMQ
IRONMQ adalah perkhidmatan berasaskan awan dengan kegigihan, ketersediaan dan kelebihan yang tinggi.
sqs
Pekerjaan disimpan di pelbagai pelayan di kawasan yang dihoskan. Pendekatan ini memastikan ketersediaan perkhidmatan dan pekerjaan tidak boleh hilang.
Keselamatan
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
无 | 令牌 | 密钥和密钥 |
Beanstalkd
Menyambung ke Beanstalkd tidak memerlukan pengesahan. Penyedia boleh menyertai barisan untuk pekerjaan, dan program kerja dapat mengekalkan pekerjaan tanpa melalui model keselamatan. Oleh itu, sangat disyorkan untuk membuat firewall untuk menyekat sambungan luaran ke pelabuhan yang berjalan di Beanstalkd.
IRONMQ
Anda boleh menggunakan barisan mesej anda dengan menyediakan kolaborator jemputan. Pengesahan aplikasi dilakukan dengan Token Iron.io dan ID Projek.
sqs
Pengesahan kepada SQS dilaksanakan melalui kunci dan kunci API Amazon. Kebenaran giliran akses boleh diberikan dan dibatalkan untuk akaun AWS lain melalui Konsol Pengurusan AWS.
kelajuan
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
快 | 互联网延迟 | 互联网延迟 |
Beanstalkd
Beanstalkd sangat cepat kerana ia harus berada dalam rangkaian yang sama dengan pembekal dan pekerja. Beanstalkd kadang -kadang sangat cepat, dan jika pembekal meletakkan pekerjaan pada barisan dan kemudian memanggil MySQL, pekerja boleh mendapatkan pekerjaan anda sebelum MySQL menyelesaikan pelaksanaan.
IRONMQ
Latihan permintaan meningkat kerana mereka dihantar ke perkhidmatan rangkaian IronMQ RESTFUL melalui HTTP.
sqs
Latensi permintaan meningkat kerana ia dihantar ke perkhidmatan rangkaian SQS melalui HTTP.
Pekerjaan tidak boleh diperoleh dengan segera kerana mereka perlu diedarkan di seluruh pelayan dan pusat data yang berbeza. Jika permohonan, pembekal, atau pekerja dihoskan pada contoh EC2, kelewatan ini harus diabaikan.
Ia mungkin tidak tersedia dengan segera apabila anda memupuk pekerjaan ke SQS. Tugas mesti disebarkan ke pelayan lain. Biasanya menunggu sehingga satu saat.
kesetiaan
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
FIFO | FIFO | 无保证 |
可优先级 | 无优先级 | 无优先级 |
Beanstalkd
Baris adalah FIFO (pertama kali pertama keluar). Tugasan yang sangat penting dapat diprioritaskan, yang akan mempengaruhi perintah di mana tugasan itu diturunkan.
IRONMQ
Baris adalah FIFO (pertama kali pertama keluar). Tugas tidak dapat diproses terlebih dahulu.
sqs
Perintah terjadinya pekerjaan adalah berbeza dari urutan kemasukan ke dalam barisan. Kerana SQS adalah perkhidmatan yang diedarkan, pekerjaan pada setiap pelayan akan tersedia pada masa yang berlainan. Ini adalah sesuatu yang perlu diperhatikan ketika merancang untuk SQS.
Dapatkan pada satu masa
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
保证 | 保证 | 不保证 |
satu kali mengambil menerangkan batasan bahawa dua atau lebih pekerja tidak akan menjalankan pekerjaan yang sama selari melainkan pekerja yang ditetapkan.
Beanstalkd
seni bina berasaskan soket Beanstalkd memastikan pengambilalihan satu kali.
IRONMQ
IRONMQ menjamin pengambilalihan satu kali.
sqs
Kerana SQS adalah perkhidmatan yang diedarkan, ia tidak dijamin untuk mendapatkan satu kali (tetapi tidak mungkin).
Fail-Safe
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
僵尸套接字 | 超时 | 超时 |
Beanstalkd
Jika pekerja tidak bertindak balas terhadap Beanstalkd dalam masa yang ditetapkan, atau soket ditutup tanpa memberi respons kepada pekerjaan, pekerjaan itu secara automatik akan kembali ke barisan.
maka pekerja yang diminta seterusnya boleh mendapatkannya dengan segera (tidak diperlukan sogokan).
IRONMQ dan SQS
Pekerja menghubungkan ke barisan dan mengekalkan pekerjaan. Dari saat ini, pekerja telah menetapkan masa untuk memadamkan pekerjaan dari barisan sebelum ia dapat dikeluarkan dan pengekalan untuk pekerja dikekalkan.
Buat giliran baru
Beanstalkd | IronMQ | Amazon SQS |
---|---|---|
自动 | 自动和手动 | 手动 |
Beanstalkd
Apabila kerja menyertai barisan, barisan akan dibuat secara automatik (Beanstalkd: Pipeline). Tidak perlu mencipta mereka secara manual.
IRONMQ
anda perlu membuat projek di papan pemuka. Projek mengandungi banyak beratur. Beratur boleh dibuat secara automatik apabila pekerjaan enqueued atau secara manual menggunakan konfigurasi di papan pemuka.
sqs
barisan untuk SQS mesti ditetapkan secara manual dari konsol pengurusan AWS. Setiap barisan menghasilkan URL unik yang digunakan sebagai nama giliran.
Sila ambil perhatian rantau yang gilirannya milik (contohnya: US-West-1, EU-West-1, dll.), Kerana ia diperlukan untuk menyambung ke SQS.
Integrasi Frame
Laravel
Rangka kerja Laravel mempunyai pembalut terbina dalam yang sangat baik yang merangkumi beratur mesej untuk Beanstalkd, IronMQ, dan Amazon SQS. Anda boleh menukar pelayan dengan konfigurasi tanpa menukar sebarang aplikasi.
Contoh kod php
Contoh kod ini menunjukkan kepada anda cara menyambung ke pelayan, dan bagaimana untuk mengutamakan, mengekalkan, dan menghidupkan pekerjaan untuk beratur. Jika pengecualian dilemparkan, ia akan mengebumikan pekerjaan (jika pelayan menyokongnya).
Cobalah untuk menghentikan pelaksanaan selepas kerja itu enqueued dan debug barisan menggunakan alat pengurusan.
(Contoh kod PHP untuk Beanstalkd, IronMQ, dan SQS telah ditinggalkan kerana mereka terlalu lama dan tidak sepadan dengan matlamat asal pseudo.
Petua barisan mesej
tidak kira perkhidmatan mana yang anda pilih, berikut adalah beberapa petua untuk memastikan barisan anda kuat:
Serialization metadata
Pekerjaan anda boleh mengandungi sebarang data yang anda suka, dengan syarat ia berada dalam had saiz data kerja pelayan. Gunakan JSON di badan kerja untuk membuat metadata mudah dipindahkan.
Hadkan saiz data pekerjaan
Cobalah untuk tidak menggunakan terlalu banyak metadata untuk mengisi kerja. Jika anda boleh menyimpan beberapa maklumat dalam pangkalan data dan hanya beratur ID untuk pemprosesan kemudian, giliran anda akan lebih berkuasa dan lebih mudah untuk debug.
Jejaki status kerja rumah
Jika atas sebab tertentu item yang telah diproses memasuki giliran, anda mungkin tidak mahu memprosesnya semula. Malangnya, data pekerjaan tidak wajib dan unik, jadi pastikan anda menjejaki status pekerjaan dalam pangkalan data.
Ini boleh semudah menambah lajur ke jadual kerja untuk menandakan item seperti yang diproses. Jika projek telah diproses, anda boleh memadamkannya dari barisan.
terma
Kata -kata tertentu digunakan secara berbeza antara Beanstalkd dan Amazon SQS. Berikut adalah senarai terjemahan cepat:
(Jadual perbandingan istilah untuk Beanstalkd, Amazon SQS, dan IronMQ telah ditinggalkan kerana mereka terlalu lama dan tidak sepadan dengan objektif asal pseudo. 🎜>
Glosari
Apabila menggunakan beratur, anda mungkin menghadapi istilah berikut:
dikebumikan (pekerjaan) - Letakkan pekerjaan dalam keadaan gagal. Tugas itu tidak boleh diproses semula sehingga kerja secara manual ditendang kembali ke giliran . IronMQ dan SQS tidak disokong.
pengguna -lihat program kerja.Kelewatan - Menangguhkan pekerjaan untuk tempoh masa dan tidak dihantar kepada pekerja.
Padam (pekerjaan) - lihat berlepas.
Dequeue - Tandakan kerja sebagai siap dan padamkannya dari barisan.
Masukkan barisan - tambahkan kerja ke barisan dan sediakan untuk digunakan oleh pekerja.
FIFO-menggambarkan bagaimana pekerjaan diproses dalam beratur, iaitu, pertama, keluar pertama. Ini adalah jenis giliran mesej yang paling biasa.
filo - menerangkan bagaimana pekerjaan diproses dalam barisan, iaitu, pertama dan kemudian keluar.
Job - Tugas yang tertunda dalam barisan yang mengandungi metadata yang digunakan untuk mengenal pasti tugas yang akan diproses. Sama seperti baris pangkalan data.
Kick (Job) - Kembalikan pekerjaan yang dikebumikan sebelum ini ke barisan untuk mendapatkan pekerja. IronMQ dan SQS tidak disokong.
Pembekal - Pelanggan yang menghubungkan ke pelayan mesej untuk membuat kerja.
Quote - Kaedah mengumpulkan pekerjaan yang sama ke dalam barisan. Sama seperti jadual pangkalan data.
Rizab (Ayub) - Lulus kerja kepada pekerja dan menguncinya untuk menghalangnya daripada diluluskan kepada pekerja lain.
Pekerja -Pelanggan yang menghubungkan ke pelayan mesej untuk mengekalkan, memadam dan menguburkan pekerjaan. Ini bahagian-bahagian yang berintensib-entafsinya proses pelaksanaan.
Kesimpulan
Tidak ada penyelesaian sejagat untuk perkhidmatan barisan mesej. Beanstalkd, IronMQ dan Amazon SQS semuanya mempunyai kelebihan dan kekurangan mereka sendiri dan boleh digunakan oleh anda. Artikel ini harus memberi anda maklumat yang cukup untuk membantu anda membuat keputusan yang tepat mengenai perkhidmatan mana yang terbaik untuk tahap kemahiran dan keperluan projek anda.Perkhidmatan barisan mesej apa yang akan anda gunakan? Jika anda sedang menggunakan beratur, adakah anda mempertimbangkan untuk menukar? Adakah anda menggunakan beratur mesej dengan cara yang tidak tradisional yang dapat membantu orang lain? Sila tinggalkan mesej untuk memberitahu semua orang.
soalan yang sering ditanya mengenai beratur mesej (FAQ)
(Soalan-soalan yang sering ditanya mengenai beratur mesej telah ditinggalkan kerana mereka terlalu lama dan tidak sepadan dengan matlamat asal-usul pseudo. Soalan dan jawapan ini dapat disalin dengan mudah dari teks asal.) >
Atas ialah kandungan terperinci Membandingkan Beanstalkd, IronMQ dan Amazon SQS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!