Node.js 微服务
微服务是一种架构风格,将应用拆分为多个独立部署的小服务,每个服务专注单一职责。
微服务 vs 单体架构
| 单体架构 | 微服务 | |
|---|---|---|
| 部署 | 整包部署 | 独立部署 |
| 扩展 | 整体扩缩 | 按需扩某个服务 |
| 技术栈 | 统一 | 每个服务可不同 |
| 故障影响 | 整体不可用 | 局部故障隔离 |
| 团队 | 单团队 | 多团队独立开发 |
微服务通信方式
| 方式 | 适用场景 |
|---|---|
| HTTP REST | 同步请求/响应 |
| gRPC | 高性能服务间调用 |
| 消息队列 (RabbitMQ/Kafka) | 异步解耦 |
| TCP/UDP | 低层通信 |
服务发现
user-service (3001) ──┐
order-service (3002) ──┼── 注册中心(Consul/Etcd/Nacos)
pay-service (3003) ──┘
↓
网关层 → 查询注册中心 → 动态路由简单拆分示例
sh
# 项目结构
├── gateway/ # 网关(入口+路由)
├── user-service/ # 用户服务
├── order-service/ # 订单服务
├── pay-service/ # 支付服务
└── shared/ # 公共模块(DTO/工具)相关技术栈回顾
| 模块 | 技术 |
|---|---|
| 网关层 | Fastify + http-proxy |
| 服务通信 | HTTP / gRPC / socket.io |
| 数据库 | 每服务独立数据库(mysql2/prisma) |
| 缓存 | Redis(ioredis) |
| 认证 | JWT 统一认证 |
| 消息队列 | RabbitMQ / Kafka |