Rumah >hujung hadapan web >tutorial js >Struktur Data Gilir: Cara Membina Gilir Tugas Node

Struktur Data Gilir: Cara Membina Gilir Tugas Node

Christopher Nolan
Christopher Nolanasal
2025-02-12 08:23:09326semak imbas

Tutorial ini menerangkan struktur data giliran dan menunjukkan aplikasi mereka dalam sistem beratur, sering digunakan untuk memproses tugas jangka panjang seperti penghantaran surat berita e-mel. Kami akan membina giliran tugas nod mudah menggunakan MongoDB sebagai broker mesej.

Queue Data Structures: How to Build a Node Task Queue

Melaksanakan tugas -tugas sebaik sahaja permintaan tidak selalu dilaksanakan. Bayangkan sistem surat berita e -mel: Menghantar ribuan e -mel dengan serta -merta akan mengatasi sistem. Begitu juga, dengan segera mengubah saiz imej yang dimuat naik akan mewujudkan kelewatan yang tidak dapat diterima. Tugas decoupling menyediakan respons pengguna segera manakala proses latar belakang mengendalikan beban kerja.

Konsep Utama:

  • Beratur efisien dengan MongoDB: memanfaatkan keupayaan MongoDB untuk membina giliran tugas nod berskala.
  • decoupling untuk pengalaman pengguna yang lebih baik: pemprosesan tugas berasingan dari interaksi pengguna untuk respons yang lebih cepat.
  • Pelaksanaan barisan asas: Gunakan kelas JavaScript (, push()) atau kelas ES6 untuk pengurusan giliran. shift()
  • Platform beratur yang teguh: meneroka Redis, RabbitMQ, Amazon SQS, dan lain-lain, untuk aplikasi peringkat perusahaan.
  • modul: queue-mongodb memudahkan pengurusan barisan dalam node.js menggunakan mongoDB.

Struktur data giliran:

Baris adalah struktur data FIFO (pertama-dalam-pertama). Item ditambah (enqueued) ke belakang dan dikeluarkan (ditakrifkan) dari depan.

BASIC JavaScript Giliran:

Giliran mudah boleh dilaksanakan menggunakan array JavaScript:

<code class="language-javascript">const queue = [];
queue.push('item 1');
queue.push('item 2');
console.log(queue.shift()); // item 1
console.log(queue.shift()); // item 2</code>
Pendekatan yang lebih berstruktur menggunakan kelas ES6:

<code class="language-javascript">class Queue {
  constructor() { this.q = []; }
  send(item) { this.q.push(item); }
  receive() { return this.q.shift(); }
}</code>
Ini sesuai untuk tugas-tugas klien yang kurang kritikal, tetapi kekurangan kegigihan dan akses pelbagai aplikasi.

Platform beratur (redis, rabbitmq, dan lain -lain):

Untuk aplikasi pelayan yang kompleks, broker mesej khusus yang ditawarkan:

    Kegigihan data
  • Protokol akses berganda
  • Berbilang beratur
  • pemesejan tertunda
  • Sokongan seperti transaksi
  • corak subscribe-subscribe

menggunakan mongoDB sebagai broker mesej:

kami akan menggunakan modul

untuk barisan tugas nod yang mantap, mudah dilaksanakan. queue-mongodb

persediaan projek giliran tugas nod:

  1. Pasang node.js 14.
  2. Buat folder projek (queue-test).
  3. Buat package.json:
<code class="language-javascript">const queue = [];
queue.push('item 1');
queue.push('item 2');
console.log(queue.shift()); // item 1
console.log(queue.shift()); // item 2</code>
  1. Pasang kebergantungan: npm install
  2. 3
  3. (Pilihan) Gunakan Docker Tulis untuk contoh MongoDB. .env QUEUE_DB_HOST QUEUE_DB_PORT
  4. (menambah barisan):

send.js (pemprosesan dari barisan):

<code class="language-javascript">class Queue {
  constructor() { this.q = []; }
  send(item) { this.q.push(item); }
  receive() { return this.q.shift(); }
}</code>

receive.js Butiran Modul:

<code class="language-json">{
  "name": "queue-test",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "send": "node ./send.js",
    "receive": "node ./receive.js"
  },
  "dependencies": {
    "@craigbuckler/queue-mongodb": "^1.0.0", // Adjust version as needed
    "dotenv": "^16.0.3" // Add dotenv for environment variables
  }
}</code>

Modul menggunakan MongoDB untuk penyimpanan. Kaedah menambah dokumen, dan queue-mongodb mengambil dan memadam item tertua. ,

, dan

menyediakan fungsi pengurusan barisan tambahan. send() receive() remove() Kesimpulan: purge() count()

Tutorial ini menunjukkan cara yang praktikal dan cekap untuk melaksanakan barisan tugas di Node.js menggunakan MongoDB. Pendekatan ini mengimbangi kesederhanaan dan skalabiliti, menjadikannya sesuai untuk pelbagai aplikasi. Ingatlah untuk menyesuaikan kod dan konfigurasi kepada keperluan dan persekitaran khusus anda. Kod Lengkap boleh didapati di GitHub (pautan akan disediakan jika repositori GitHub sebenar tersedia).

Atas ialah kandungan terperinci Struktur Data Gilir: Cara Membina Gilir Tugas Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn