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