Erlang/OTP 完全指南
Erlang/OTP 完全指南
从零开始掌握构建高可用、高并发分布式系统的函数式编程语言。
关于本教程
本教程共 25 章,涵盖 Erlang 语言基础、OTP 框架核心、生产级工程实践以及真实项目案例。每章包含:
- 核心概念讲解
- 可运行代码示例
- 表格速查
- 注意事项(坑点预警)
- 业务场景说明
- 扩展阅读
适合谁?
- 希望学习高并发/分布式系统开发的后端工程师
- 对函数式编程感兴趣、想了解 Actor 模型的开发者
- 需要构建电信级可靠性系统的架构师
- 对 WhatsApp / RabbitMQ / CouchDB 等 Erlang 项目好奇的工程师
目录
| 章节 | 标题 | 主要内容 |
|---|---|---|
| 01 | Erlang 简介 | 历史背景、OTP 概念、适用场景(电信、消息队列、实时系统) |
| 02 | 环境搭建 | Erlang/OTP 安装、rebar3 构建工具、IDE 配置 |
| 03 | Hello World | 编译运行第一个程序、模块与函数基础 |
| 04 | 变量与类型 | 不可变变量(单次赋值)、模式匹配、基本数据类型 |
| 05 | 模式匹配 | 函数子句、case 表达式、守卫、递归中的模式匹配 |
| 06 | 函数进阶 | 匿名函数(fun)、高阶函数、列表推导 |
| 07 | 列表深入 | cons 操作符、列表处理、尾递归优化 |
| 08 | 元组与 Map | 元组、记录(Record)、Map 操作 |
| 09 | 并发编程 | spawn / send / receive、进程链接与监控 |
| 10 | OTP 基础 | GenServer、Supervisor、Application 三大支柱 |
| 11 | 监督者详解 | 重启策略、子进程规范、动态子进程 |
| 12 | 应用详解 | Application 生命周期、配置管理、发布 |
| 13 | ETS 表 | 表类型、并发访问模式、性能优化技巧 |
| 14 | Mnesia 数据库 | 分布式数据库、事务、表类型与索引 |
| 15 | IO 与网络 | 文件操作、TCP/UDP Socket、二进制处理 |
| 16 | 错误处理 | try/catch、exit 信号、link/monitor 机制 |
| 17 | 测试 | EUnit、Common Test、PropEr 属性测试 |
| 18 | 分布式 | 节点通信、RPC、全局注册、集群管理 |
| 19 | 发布与部署 | relx 打包、热代码升级、版本管理 |
| 20 | 性能优化 | profiling、fprof、内存分析、瓶颈定位 |
| 21 | Docker 容器化 | 多阶段构建、Dockerfile、Docker Compose |
| 22 | NIF 与 C 集成 | Native Implemented Functions、dirty scheduler |
| 23 | Web 开发 | Cowboy 框架、REST API、WebSocket |
| 24 | 最佳实践 | 代码风格、OTP 设计原则、生产规范 |
| 25 | 实战项目 | 消息队列、聊天服务器、实时系统 |
学习路线建议
基础阶段(第 1-6 章):语言入门
↓
数据结构(第 7-8 章):深入数据操作
↓
并发与 OTP(第 9-12 章):Erlang 的灵魂
↓
存储与网络(第 13-15 章):数据层
↓
工程化(第 16-21 章):测试、部署、性能
↓
进阶(第 22-25 章):NIF、Web、实战
快速参考
核心哲学
| 原则 | 说明 |
|---|---|
| Let it crash | 进程崩溃由 Supervisor 重启,而非防御性编程 |
| 轻量级进程 | Erlang 进程仅占约 2KB 内存,可创建百万级 |
| 不可变数据 | 变量单次赋值,消除共享状态并发问题 |
| 消息传递 | 进程间通过消息通信,不共享内存 |
| 热代码升级 | 运行时替换代码模块,零停机更新 |
常用命令速查
# 交互式 Shell
erl
# 编译单个文件
erlc hello.erl
# 使用 rebar3 构建
rebar3 compile
# 运行测试
rebar3 eunit
# 生成发布包
rebar3 release
本教程基于 Erlang/OTP 26+ 版本编写,代码示例均已在对应版本验证。