[ PROMPT_NODE_25316 ]
service-types
[ SKILL_DOCUMENTATION ]
# Render 服务类型
Render 上每种服务类型的详细说明。根据您的应用需求选择正确的服务类型。
## Web 服务 (`type: web`)
### 用途
Web 服务是处理来自互联网传入请求的 HTTP 服务器。它们可以通过 HTTPS URL 公开访问。
### 使用场景
- **REST API**: 用于移动应用或前端应用的 JSON API
- **GraphQL 服务器**: 用于客户端查询的 GraphQL 端点
- **Web 应用**: 服务器渲染的网站 (Django, Rails, Express)
- **全栈框架**: Next.js, Nuxt.js, Remix, SvelteKit
- **WebSocket 服务器**: 实时通信服务器
- **SSR 应用**: 服务器端渲染的 React, Vue 或 Angular 应用
### 关键特性
- **公共 URL**: 自动分配 `https://[service-name].onrender.com`
- **需要端口绑定**: 必须绑定到 `0.0.0.0:$PORT`
- **健康检查**: Render 会 ping 您的服务以验证其是否在运行
- **HTTPS**: 自动 SSL/TLS 证书
- **负载均衡**: 流量分布在多个实例上
- **自定义域名**: 支持您自己的域名
### 所需配置
yaml
type: web
name: my-api
runtime: node
buildCommand: npm ci
startCommand: npm start
### 最佳实践
1. **绑定到环境变量 PORT**:
javascript
const PORT = process.env.PORT || 3000;
app.listen(PORT, '0.0.0.0');
2. **添加健康检查端点**:
javascript
app.get('/health', (req, res) => {
res.status(200).json({ status: 'ok' });
});
3. **使用适当的超时设置**:Web 请求应在 30 秒内完成
4. **实现优雅关闭**:正确处理 SIGTERM 信号
---
## 工作进程服务 (`type: worker`)
### 用途
工作进程服务在后台运行任务,不处理 HTTP 请求。它们无法公开访问。
### 使用场景
- **队列处理器**: Redis 队列, BullMQ, Celery, Sidekiq
- **后台作业**: 邮件发送, 图像处理, 数据导出
- **事件消费者**: 消息队列消费者 (Kafka, RabbitMQ 等)
- **数据管道工作进程**: ETL 流程, 数据转换
- **定时后台任务**: 持续运行的进程 (非 cron)
- **WebSocket 后端**: 专用的 WebSocket 处理服务
### 关键特性
- **无公共 URL**: 无法从互联网访问
- **无端口绑定**: 不需要监听端口
- **无健康检查**: Render 以不同方式监控进程健康状况
- **长时间运行**: 可以无限期运行
- **私有 c