rebar3 构建与发布:Erlang 工程化的完整工具箱
系统讲解 rebar3 的项目结构、依赖与锁文件、profiles 配置体系、escript 与 release 打包、插件生态与 CI 集成,构建可复现的 Erlang 交付流水线。
category
系统讲解 rebar3 的项目结构、依赖与锁文件、profiles 配置体系、escript 与 release 打包、插件生态与 CI 集成,构建可复现的 Erlang 交付流水线。
以 Erlang 客户端为主线,讲解 AMQP 模型与交换机类型、生产消费与确认、可靠投递与幂等设计、连接池与背压、集群与运维实践。
Erlang 由爱立信于 1986 年开发,是电信级高可用系统的代名词;Elixir 由 José Valim 于 2012 年创造,在保留 BEAM 虚拟机全部能力的同时引入了现代语法和宏系统。本专题系统覆盖 Erlang/Elixir 语言基础与函数式编程范式、轻量级进程(Actor 模型)与消息传递并发、OTP 框架(GenServer/Supervisor/Application/状态机/事件管理)设计与容错策略、自定义 OTP Behaviour 回调契约、BEAM 运行时与进程调度、Ports 与 NIF 的 C 互操作、ETS 内存缓存与 Mnesia 分布式数据库、分布式 Erlang 节点集群与网络分区处理、Elixir Phoenix Web 框架与 Ecto 数据访问、Phoenix Channels 实时通信与 PubSub、LiveView 状态管理进阶、Mix 工具链与工程化、属性测试与 Mock 策略、热代码升级与 Release 滚动发布、以及生产环境调优与经典系统案例(WhatsApp、RabbitMQ),为构建容错的分布式系统提供完整知识路径。进一步追加 OTP 监督树与任务并发、位语法与二进制协议解析、可观测性三支柱、Ecto 高级查询、安全加固与 OTP 应用设计模式,覆盖从语言到生产部署的完整知识路径。
系统讲解 Erlang 访问关系型数据库的完整方案:epgsql 与 mysql-otp 驱动选型、poolboy 连接池设计、事务与预处理语句、迁移与索引策略、故障重连与超时治理。
深入解析 Dialyzer 的 success typing 原理、spec 与 type 语法、PLT 构建与增量分析、常见告警的解读与治理,以及如何把静态分析纳入测试与 CI 流程。
系统讲解 Cowboy 的架构与请求生命周期、路由与 handler、中间件与 JSON 编解码、WebSocket 与 SSE 实时通信、限流与安全加固以及生产部署。
以指标体系为主线,系统讲解 BEAM 的进程与调度器剖析、GC 与内存优化、binary 与 ETS 高效使用、消息队列与背压治理,以及可复用的压测方法论。
OTP 应用设计模式:Application 规格与回调(mod/start/stop)、监督树分层架构(Supervisor/Worker/Pool)、行为模式选择(GenServer/GenStatem/GenEvent)、Release 打包( distillery/mix release/relx)、热代码升级(code_change/upgrade/downgrade)、配置管理(Mix.Config/Config.Provider/runtime.exs)、环境分离(dev/test/prod)、远程 Shell 与调试(remsh/observer)、分布式部署策略、性能剖析与优化(fprof/eprof/cprof)。
Erlang/Elixir 安全加固:密码哈希(bcrypt/Argon2/PBKDF2)、对称与非对称加密(AES/RSA/ECIES)、数字签名与证书(x509/TLS/SSL)、安全随机数生成(crypto:strong_rand_bytes)、分布式节点安全(cookie/TLS/防火墙)、常见注入攻击防御(SQL 注入/XSS/代码注入)、Secrets 管理(runtime.exs/环境变量/HashiCorp Vault)、BEAM 沙箱与资源限制、安全审计与日志。
Ecto 高级查询与数据库工程:查询构建器(from/join/where/order/group/having/窗口函数)、关联预加载(preload/join_preload)、多态关联(表继承/单表继承/多态外键)、数据库事务与隔离级别(Repo.transaction/Ecto.Multi)、变更集与数据验证(cast/validate/unique_constraint)、子查询与 CTE、Ecto 适配器与连接池(DBConnection/连接池大小/超时)、与 PostgreSQL 高级特性集成(JSONB/数组/范围/全文搜索)、性能分析与 N+1 治理。
Erlang/Elixir 可观测性:日志系统(Logger 配置/处理器/格式化/结构化日志)、Telemetry 事件与指标(attach/detach/execute/计数器/直方图/最后值)、分布式追踪(OpenTelemetry/Span 上下文传播)、Observer/CLI 诊断工具(observer_cli/recon/vmstats)、监控告警(Prometheus/Grafana 集成)、BEAM VM 内部指标(reductions/内存/进程/ETS)、日志聚合与 ELK/Loki 集成、可观测性最佳实践。
Elixir OTP 监督树与任务并发:Supervisor 策略(one_for_one/one_for_all/rest_for_one/simple_one_for_one)、GenServer 状态机(init/handle_call/handle_cast/handle_info)、Task 异步并发(async/await/yield)、Agent 轻量状态、DynamicSupervisor 动态子进程、Registry 进程发现、OTP 应用结构(Application 回调/规格)、错误隔离与重启强度(MaxR/MaxT)、分布式 Erlang 节点通信、与 Phoenix 的集成模式。
Erlang 位语法与二进制处理:二进制数据类型(bitstring/binary)、位语法表达式(<<Value:Size/TypeSpecifierList>>)、模式匹配二进制(头部/长度/剩余)、二进制推导(binary comprehensions)、高效拼接与拆分(iolist/iodata)、位标志位掩码操作、协议解析实战(TCP/IP 包头/Bitcoin 区块/Protobuf 二进制)、性能优化与内存布局、与 C/NIF 的互操作。
自定义 OTP behaviour 实战:behaviour 是什么、callback 规范(callback/optional_callbacks)、行为实现的契约检查、构建自定义 GenServer 风格行为、错误处理与调用约定、行为 vs 协议的选型、测试行为实现、实战案例(Worker/Registry)。
Phoenix Channels 实时通信实战:Channel 与 Socket 架构、WebSocket 连接与认证、Channel 加入与消息流、PubSub 广播与订阅、Topic 设计模式(用户/房间/资源隔离)、Presence 在线状态、Channel 性能调优与背压、与 LiveView 的配合、生产部署注意事项。
Mix 工具链与 Elixir 工程化实战:Mix 项目结构与任务(mix new/task)、依赖管理与 Hex 生态、编译与配置(Mix.Config/环境)、测试与代码质量(mix test/excoveralls/credo/dialyxir)、发布与部署(mix release/Elixir releases)、CI 集成、常见工作流与陷阱。
LiveView 进阶实战:LiveView 生命周期与状态管理、嵌套 LiveView 与组件(Function Component)、事件处理与表单、PubSub 与跨进程状态同步、并发与长任务处理(Task.async_stream)、性能优化(防抖/节流、diff 优化)、生产部署与连接恢复、常见陷阱。
Erlang 与 C 互操作实战:Port 模型与消息机制、Port 外设驱动(Driver)开发、NIF 接口与生命周期管理、NIF 资源对象(Resource)、NIF 性能陷阱(调度器阻塞)、线程安全与并发 NIF、NIF 与 Port 选型、常见问题排查(内存泄漏/崩溃)。
BEAM 运行时与进程调度深度解析:BEAM 虚拟机架构(寄存器/模拟器)、进程与调度器(Scheduler)模型、调度策略(公平/抢占/削减)、ETS 与进程协作、内存管理与垃圾回收、复制式写语义(COW)、性能监控与调优、与 OS 线程的映射。
全面讲解 Elixir 测试体系:ExUnit 的异步并发测试与标签机制、StreamData 属性测试的生成与收缩、Mox 契约式 Mock 策略,以及 Ecto Sandbox 隔离下的测试最佳实践。