Node.js 微服务架构实践

admin
2025-11-23 05:21 阅读 2156
使用Node.js构建微服务架构的完整指南

Node.js 性能优化指南
Node.js 应用的性能优化涉及多个层面,从代码层面到架构层面都需要考虑。
1. 异步最佳实践
// 避免回调地狱,使用 async/await
async function processData() {
const user = await getUser()
const posts = await getPosts(user.id)
const comments = await getComments(posts)
return { user, posts, comments }
}
// 并行请求
const [users, products] = await Promise.all([
fetchUsers(),
fetchProducts()
])
// 使用 Promise.allSettled 处理部分失败
const results = await Promise.allSettled(promises)
2. 流处理大文件
const fs = require("fs")
const zlib = require("zlib")
// 使用流处理大文件
fs.createReadStream(“input.txt”)
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream(“output.gz”))
// 转换流
const { Transform } = require(“stream”)
const upperCase = new Transform({
transform(chunk, encoding, callback) {
callback(null, chunk.toString().toUpperCase())
}
})
3. 集群模式
const cluster = require("cluster")
const os = require("os")
if (cluster.isMaster) {
const cpuCount = os.cpus().length
for (let i = 0; i < cpuCount; i++) {
cluster.fork()
}
cluster.on(“exit”, (worker) => {
console.log(Worker ${worker.id} died)
cluster.fork()
})
} else {
require(“./app”)
}
4. 内存管理
// 避免内存泄漏
// 1. 及时清理定时器
const timer = setInterval(() => {}, 1000)
clearInterval(timer)
// 2. 移除事件监听器
emitter.removeListener(“event”, handler)
// 3. 使用 WeakMap/WeakSet
const cache = new WeakMap()
// 监控内存使用
const used = process.memoryUsage()
console.log(Heap: ${used.heapUsed / 1024 / 1024} MB)
5. 缓存策略
const NodeCache = require("node-cache")
const cache = new NodeCache({ stdTTL: 600 })
async function getData(key) {
let data = cache.get(key)
if (data) return data
data = await fetchFromDB(key)
cache.set(key, data)
return data
}
// Redis 缓存
const Redis = require(“ioredis”)
const redis = new Redis()
await redis.set(“key”, JSON.stringify(data), “EX”, 3600)
6. 数据库优化
// 连接池
const pool = mysql.createPool({
connectionLimit: 10,
host: "localhost",
user: "root",
database: "mydb"
})
// 批量操作
await Model.bulkCreate(items)
// 索引优化
// 为频繁查询的字段添加索引
性能监控工具
- clinic.js - 性能诊断
- 0x - 火焰图分析
- PM2 - 进程管理和监控
- New Relic - APM 监控
