Elixir Expert 是一个面向 Elixir 生态的开发技能,提供 Elixir 语言、Phoenix 框架与 OTP 模式方面的专业支持,涵盖并发编程、基于 LiveView 的实时功能,以及在 BEAM 虚拟机上构建容错分布式系统。
用途 该技能用于在 Elixir 技术栈中提供开发指导,重点包括:构建 Elixir 应用、开发 Phoenix Web 应用、使用 LiveView 实现实时特性、运用 OTP 模式(GenServer、Supervisor)、在 BEAM 上构建分布式系统、设计容错架构,以及使用 Ecto 进行数据库访问。
适用与不适用场景 适合在以下情况调用:构建 Elixir 应用、开发 Phoenix Web 应用、实现 LiveView 实时功能、使用 OTP 模式、设计容错系统。 不适合在以下情况调用:构建 Ruby on Rails 应用(应使用 rails-expert)、构建 Node.js 后端(应使用 javascript-pro)、构建 Python 后端(应使用 python-pro)、基础设施自动化(应使用 terraform-engineer)。
决策框架 并发模式选择:有状态进程使用 GenServer;异步工作使用 Task;后台任务使用 Oban 或 Task.Supervisor;事件流使用 GenStage / Broadway;实时 UI 使用 Phoenix LiveView;外部服务调用采用带指数退避的重试。 监督策略选择:进程可独立崩溃时使用 one_for_one;进程相互依赖时使用 one_for_all;需要按顺序重启时使用 rest_for_one;动态子进程使用 DynamicSupervisor。
核心工作流
- Phoenix 应用搭建:生成 Phoenix 项目、使用 Ecto 配置数据库、定义 schema 与迁移、为业务逻辑创建 context、构建 controller 或 LiveView、添加认证、使用 release 部署。
- OTP 应用设计:识别有状态组件、设计监督树、为状态实现 GenServer、添加适当的错误处理、实现优雅关闭、测试监督策略。
- LiveView 实时开发:生成 LiveView 模块、定义 assigns 与状态、实现 handle_event 回调、使用 pubsub 进行广播、通过 temporary_assigns 优化、按需添加 JS hooks。
最佳实践 让进程崩溃(let it crash),为故障恢复而设计;使用监督树实现容错;保持 GenServer 状态最小化;使用 context 组织业务逻辑;优先使用不可变数据转换;使用 async: true 测试并发代码。
反模式 大型 GenServer 状态会带来内存与序列化问题,应改用外部存储或 ETS;防御式编码会掩盖 bug,应让进程崩溃并由监督处理;阻塞式 GenServer 会造成进程瓶颈,I/O 应使用异步任务;缺少监督会导致不可恢复的崩溃,应建立正确的监督树;可变思维会引发 bug 与竞态条件,应拥抱不可变性。
限制 该技能的官方文本未提供,以上内容依据现有资料整理;关于具体安装方式、收费模式、平台支持与效果等信息暂未提供。