Membangunkan Perkhidmatan Mikro Node.js
Bina perkhidmatan Node.js bebas yang berkomunikasi antara satu sama lain dengan memberi tumpuan kepada reka bentuk dipacu domain.
Membangunkan Perkhidmatan Mikro Node.js ialah pelajaran Kem Intensif Pembangunan Backend Node.js percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif Pembangunan Backend Node.js, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif Pembangunan Backend Node.js merangkumi sejumlah 4 pelajaran.
Pengenalan Perkhidmatan Mikro Node.js
Selamat datang ke pembinaan perkhidmatan mikro Node.js! Kita akan meneroka cara mencipta perkhidmatan kecil dan bebas yang berfungsi bersama.
Perkhidmatan mikro ialah gaya seni bina yang membina aplikasi sebagai himpunan perkhidmatan kecil dan autonomi. Setiap perkhidmatan berjalan dalam prosesnya sendiri dan berkomunikasi menggunakan mekanisme ringan, selalunya API HTTP.

Prinsip Teras Perkhidmatan Mikro
Perkhidmatan mikro mengikut prinsip utama:
- Pelancaran Bebas: Setiap perkhidmatan boleh dilancarkan secara bebas.
- Gandingan Longgar: Perkhidmatan tidak bergantung rapat antara satu sama lain.
- Tanggungjawab Tunggal: Setiap perkhidmatan menumpukan pada keupayaan perniagaan tertentu (sebuah 'domain').
- Kepelbagaian Teknologi: Perkhidmatan yang berbeza boleh menggunakan teknologi yang berbeza (walaupun kita akan menggunakan Node.js di sini).
Asas Domain-Driven Design
Domain-Driven Design (DDD) amat penting untuk perkhidmatan mikro. Maksudnya ialah menstrukturkan perkhidmatan berdasarkan domain perniagaan (contohnya, 'Pengguna', 'Produk' dan 'Pesanan').
- Konteks Terhad: Setiap perkhidmatan mikro mentakrifkan sempadannya sendiri dengan jelas serta memiliki data dan logik domain tertentu.
- Bahasa Sejagat: Menggunakan bahasa yang sama untuk konsep domain dalam perkhidmatan tersebut.
Menstrukturkan Perkhidmatan Node.js
Projek perkhidmatan mikro Node.js yang biasa mungkin mempunyai struktur seperti ini:
my-service/-
src/ -
controllers/(logik untuk permintaan) -
models/(skema data) -
routes/(titik akhir API) -
app.js(persediaan Express utama) -
package.json -
.env(pemboleh ubah persekitaran)
Komunikasi Antara Perkhidmatan
Perkhidmatan mikro perlu berkomunikasi untuk memenuhi permintaan. Kaedah biasa termasuk:
- HTTP/REST: Panggilan segerak antara perkhidmatan. Satu perkhidmatan membuat permintaan HTTP kepada perkhidmatan lain.
- Baris Gilir Mesej: Komunikasi tak segerak melalui broker mesej (contohnya, RabbitMQ dan Kafka). Perkhidmatan menerbitkan peristiwa dan melanggan peristiwa daripada perkhidmatan lain.
Untuk pelajaran ini, kita akan menumpukan pada komunikasi HTTP kerana kesederhanaannya.
Membina Perkhidmatan Mikro Pengguna
Mari cipta perkhidmatan mikro 'Pengguna' yang ringkas menggunakan Express. Perkhidmatan ini akan mengurus data pengguna dan berjalan pada port 3001.
Cuba jalankan kod ini:
const express = require('express');
const app = express();
const PORT = 3001;
app.use(express.json());
const users = [
{ id: 'u1', name: 'Alice', email: 'alice@example.com' },
{ id: 'u2', name: 'Bob', email: 'bob@example.com' }
];
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === req.params.id);
if (user) {
res.json(user);
} else {
res.status(404).send('User not found');
}
});
app.get('/users', (req, res) => {
res.json(users);
});
app.listen(PORT, () => {
console.log(`Users Service running on port ${PORT}`);
});Membina Perkhidmatan Mikro Produk
Sekarang, mari cipta perkhidmatan mikro 'Produk' yang berasingan. Perkhidmatan ini akan mengurus data produk dan berjalan pada port 3002.
Ini ialah aplikasi yang sepenuhnya bebas:
const express = require('express');
const app = express();
const PORT = 3002;
app.use(express.json());
const products = [
{ id: 'p1', name: 'Laptop', price: 1200, ownerId: 'u1' },
{ id: 'p2', name: 'Mouse', price: 25, ownerId: 'u2' }
];
app.get('/products', (req, res) => {
res.json(products);
});
app.listen(PORT, () => {
console.log(`Products Service running on port ${PORT}`);
});Mensimulasikan Komunikasi Perkhidmatan
Bagaimanakah perkhidmatan 'Produk' mendapatkan butiran pengguna bagi pemilik produk? Perkhidmatan itu membuat panggilan HTTP kepada perkhidmatan 'Pengguna'!
Dalam contoh ini, kita mensimulasikan pelayan mini (untuk pengguna) dan klien (yang mendapatkan data pengguna) dalam satu skrip bagi menunjukkan aliran komunikasi. Bahagian klien inilah yang akan dilakukan oleh perkhidmatan Produk anda.
const http = require('http');
// --- SIMULATED USER SERVICE (SERVER PART) ---
const users = {
'u1': { id: 'u1', name: 'Alice', email: 'alice@example.com' },
'u2': { id: 'u2', name: 'Bob', email: 'bob@example.com' }
};
const simulatedUserServer = http.createServer((req, res) => {
if (req.url.startsWith('/users/') && req.method === 'GET') {
const userId = req.url.split('/')[2];
if (users[userId]) {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(users[userId]));
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('User not found');
}
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Not Found');
}
});
const SIMULATED_PORT = 3001;
simulatedUserServer.listen(SIMULATED_PORT, () => {
console.log(`Simulated User Service running on port ${SIMULATED_PORT}`);
});
// --- CLIENT PART (e.g., a Product Service trying to get user data) ---
async function fetchUserFromSimulatedService(userId) {
return new Promise((resolve, reject) => {
const options = {
hostname: 'localhost',
port: SIMULATED_PORT,
path: `/users/${userId}`,
method: 'GET'
};
const req = http.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
if (res.statusCode === 200) {
resolve(JSON.parse(data));
} else {
reject(new Error(`Failed to fetch user: ${res.statusCode}`));
}
});
});
req.on('error', (e) => reject(e));
req.end();
});
}
console.log('\n--- Product Service fetching user data simulation ---');
fetchUserFromSimulatedService('u1')
.then(user => console.log('Fetched User:', user))
.catch(error => console.error('Error fetching user:', error.message))
.finally(() => {
// Important: close the simulated server after demonstration
simulatedUserServer.close(() => console.log('Simulated User Service stopped.'));
});
fetchUserFromSimulatedService('u3') // Try fetching a non-existent user
.then(user => console.log('Fetched User:', user))
.catch(error => console.error('Error fetching user:', error.message));Pertukaran Perkhidmatan Mikro
Walaupun berkuasa, perkhidmatan mikro mempunyai beberapa pertukaran:
- Kerumitan yang Bertambah: Lebih banyak perkhidmatan bermakna lebih banyak perkara untuk diurus, dilancarkan dan dipantau.
- Kekonsistenan Data: Mengekalkan kekonsistenan data merentas berbilang pangkalan data boleh menjadi mencabar.
- Transaksi Teragih: Operasi yang merangkumi berbilang perkhidmatan memerlukan reka bentuk yang teliti.
- Overhed Operasi: Memerlukan alat CI/CD dan pemantauan yang kukuh.
Semakan Ringkas: Kelebihan Perkhidmatan Mikro
Berdasarkan perkara yang telah anda pelajari, yang manakah antara berikut merupakan kelebihan utama menggunakan seni bina perkhidmatan mikro?
Imbas Kembali & Langkah Seterusnya
Kita telah membincangkan asas pembangunan perkhidmatan mikro Node.js, memahami prinsip terasnya dan cara perkhidmatan tersebut berkomunikasi. Kita telah melihat cara menstrukturkan perkhidmatan kecil yang berfokus pada domain serta mensimulasikan komunikasi antara perkhidmatan.
Walaupun berkuasa, ingatlah pertukaran dari segi kerumitan. Seterusnya, anda akan belajar cara mengurus permintaan klien kepada perkhidmatan ini menggunakan Gerbang API!
Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 22
- Pelajaran
- 92
Soalan Lazim
Adakah pelajaran “Membangunkan Perkhidmatan Mikro Node.js” percuma?
Ya — teks penuh “Membangunkan Perkhidmatan Mikro Node.js” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Kem Intensif Pembangunan Backend Node.js, tingkat taraf kepada CoddyKit PRO. Kursus Kem Intensif Pembangunan Backend Node.js merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Membangunkan Perkhidmatan Mikro Node.js”?
Bina perkhidmatan Node.js bebas yang berkomunikasi antara satu sama lain dengan memberi tumpuan kepada reka bentuk dipacu domain. Anda berlatih Kem Intensif Pembangunan Backend Node.js menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif Pembangunan Backend Node.js?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif Pembangunan Backend Node.js di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Membangunkan Perkhidmatan Mikro Node.js” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif Pembangunan Backend Node.js ini?
Ya. Setiap pelajaran Kem Intensif Pembangunan Backend Node.js menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengenalan kepada Seni Bina Perkhidmatan Mikro
- Membangunkan Perkhidmatan Mikro Node.js
- Melaksanakan Gerbang API
- Komunikasi Antara Perkhidmatan dengan Baris Gilir Mesej