Heroku 简介 #
什么是 Heroku? #
Heroku 是一个基于容器的云平台即服务(Platform as a Service,PaaS),让开发者能够专注于编写代码,而无需管理底层基础设施。开发者只需将代码推送到 Heroku,平台会自动处理构建、部署和扩展。
发展历程 #
text
2007年 ─── Heroku 成立,最初支持 Ruby
│
│ 作为 Y Combinator 孵化项目
│
2010年 ─── 被 Salesforce 以 2.12 亿美元收购
│
│ 开始支持多语言
│
2011年 ─── 推出 Cedar 技术栈
│
│ 支持 Node.js、Java、Python 等
│
2013年 ─── 推出 Heroku Button
│
│ 一键部署功能
│
至今 ─── 持续更新,支持更多语言和服务
核心架构 #
技术架构图 #
text
┌─────────────────────────────────────────────────────┐
│ 用户应用层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Web Dyno│ │Worker │ │Scheduler│ │
│ │ │ │ Dyno │ │ │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼────────────┼────────────┼───────────────────┘
│ │ │
┌───────┼────────────┼────────────┼───────────────────┐
│ │ Heroku 平台服务层 │
│ ┌────▼────┐ ┌────▼────┐ ┌────▼────┐ │
│ │ Router │ │ Logplex │ │ API │ │
│ │ │ │ │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────┘
│
┌───────┼─────────────────────────────────────────────┐
│ │ Add-ons 服务层 │
│ ┌────▼────┐ ┌─────────┐ ┌─────────┐ │
│ │Postgres │ │ Redis │ │SendGrid │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────┘
核心组件 #
| 组件 | 说明 |
|---|---|
| Dyno | 运行应用的轻量级容器 |
| Buildpack | 检测语言并构建应用 |
| Slug | 构建后的可部署包 |
| Release | Slug + Config Vars 的组合 |
| Logplex | 日志聚合和路由系统 |
| Router | HTTP 请求路由器 |
支持的语言 #
官方支持语言 #
| 语言 | Buildpack | 版本支持 |
|---|---|---|
| Node.js | heroku/nodejs | 18.x, 20.x, 22.x |
| Ruby | heroku/ruby | 3.0, 3.1, 3.2, 3.3 |
| Java | heroku/java | 8, 11, 17, 21 |
| Python | heroku/python | 3.9, 3.10, 3.11, 3.12 |
| PHP | heroku/php | 8.1, 8.2, 8.3 |
| Go | heroku/go | 1.20, 1.21, 1.22 |
| Scala | heroku/scala | 2.13, 3.x |
| Clojure | heroku/clojure | 1.11 |
社区支持语言 #
bash
# 使用社区 Buildpack
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-rust
核心特性 #
1. Git 部署 #
bash
# 添加 Heroku 远程仓库
heroku create
# 推送部署
git push heroku main
# 自动构建和部署
# Heroku 检测语言 → 运行 Buildpack → 创建 Slug → 启动 Dyno
2. 动态扩展 #
bash
# 扩展 Web Dyno 数量
heroku ps:scale web=3
# 添加 Worker Dyno
heroku ps:scale worker=2
# 调整 Dyno 大小
heroku ps:resize web=standard-2x
3. 环境变量管理 #
bash
# 设置环境变量
heroku config:set DATABASE_URL=postgres://...
heroku config:set SECRET_KEY=your-secret-key
# 查看所有环境变量
heroku config
4. Add-ons 生态系统 #
bash
# 添加 PostgreSQL 数据库
heroku addons:create heroku-postgresql:mini
# 添加 Redis
heroku addons:create heroku-redis:mini
# 添加监控
heroku addons:create newrelic:wayne
应用场景 #
适合 Heroku 的场景 #
| 场景 | 说明 |
|---|---|
| Web 应用 | 网站、API 服务、后台管理 |
| 移动后端 | REST API、GraphQL 服务 |
| 微服务 | 小型服务、事件处理 |
| 定时任务 | 定期数据处理、报表生成 |
| 原型开发 | 快速验证想法、MVP 产品 |
不适合 Heroku 的场景 #
| 场景 | 原因 |
|---|---|
| 长时间运行任务 | Dyno 有执行时间限制 |
| 大文件存储 | 临时文件系统,重启丢失 |
| 高性能计算 | 需要专用硬件 |
| 严格合规要求 | 需要私有部署 |
定价模型 #
Dyno 类型 #
| 类型 | 价格 | 内存 | CPU | 适用场景 |
|---|---|---|---|---|
| Eco | $5/月 | 512MB | 共享 | 个人项目 |
| Basic | $7/月 | 512MB | 共享 | 小型应用 |
| Standard-1X | $25/月 | 512MB | 共享 | 生产环境 |
| Standard-2X | $50/月 | 1GB | 共享 | 中型应用 |
| Performance-M | $250/月 | 2.5GB | 专用 | 高性能需求 |
| Performance-L | $500/月 | 14GB | 专用 | 大型应用 |
免费额度变化 #
text
2022年11月之前:
├── 免费 Dyno (550-1000 小时/月)
├── 免费 PostgreSQL
└── 免费 Redis
2022年11月之后:
├── 取消免费 Dyno
├── 推出 Eco Dyno ($5/月)
└── Mini 数据库计划
与其他平台对比 #
Heroku vs Vercel #
| 特性 | Heroku | Vercel |
|---|---|---|
| 定位 | 全栈应用 | 前端应用 |
| 后端支持 | 完整 | Serverless Functions |
| 数据库 | 内置 | 需外部服务 |
| 部署方式 | Git/Container | Git |
| 扩展性 | 手动扩展 | 自动扩展 |
Heroku vs AWS Elastic Beanstalk #
| 特性 | Heroku | Elastic Beanstalk |
|---|---|---|
| 易用性 | 简单 | 中等 |
| 控制粒度 | 较低 | 较高 |
| 价格 | 较高 | 较低 |
| 学习曲线 | 低 | 中 |
Heroku vs Railway #
| 特性 | Heroku | Railway |
|---|---|---|
| 成熟度 | 高 | 较新 |
| 免费额度 | 无 | 有 |
| 定价 | 较高 | 较低 |
| 功能丰富度 | 高 | 中 |
Heroku 生态系统 #
Elements Marketplace #
text
┌─────────────────────────────────────┐
│ Heroku Elements │
├─────────────────────────────────────┤
│ Buildpacks │
│ ├── 官方 Buildpacks │
│ └── 社区 Buildpacks │
├─────────────────────────────────────┤
│ Add-ons │
│ ├── 数据存储 (Postgres, Redis) │
│ ├── 监控分析 (New Relic, Librato) │
│ ├── 通信服务 (SendGrid, Twilio) │
│ └── 安全服务 (Sqreen, Okta) │
├─────────────────────────────────────┤
│ Buttons │
│ └── 一键部署模板 │
└─────────────────────────────────────┘
下一步 #
现在你已经了解了 Heroku 的基础知识,接下来学习 账号注册与配置 开始实际使用!
最后更新:2026-03-28