44. 并发模型对比:Actor、CSP 与数据并行
从共享内存并发的困境切入,系统对比 Actor 与 CSP 两大消息传递模型:讲清 Actor 的 mailbox、消息投递语义与 Erlang 监督树,拆解 CSP 的 channel、select 与 Go 调度器,再梳理数据并行(MapReduce、Fork-Join、SIMD)的适用边界,最后给出按通信拓扑与失败模型的选型准则。
tag
从共享内存并发的困境切入,系统对比 Actor 与 CSP 两大消息传递模型:讲清 Actor 的 mailbox、消息投递语义与 Erlang 监督树,拆解 CSP 的 channel、select 与 Go 调度器,再梳理数据并行(MapReduce、Fork-Join、SIMD)的适用边界,最后给出按通信拓扑与失败模型的选型准则。
BEAM 内存问题的系统排查方法:进程堆、二进制堆、ETS 与进程外内存的构成与观测入口、recon 的 proc_window/bin_leak/alloc 工具链、引用计数二进制与堆大小的分析手段、邮箱堆积与原子泄漏等典型模式,以及从 RSS 到具体进程的完整定位流程。
系统梳理 BEAM 集群的一致性问题:分布式 Erlang 的全互联拓扑与连接成本、libcluster 的 Gossip 与 Kubernetes 策略、CAP 取舍与一致性谱系、CRDT 类型与收敛语义、脑裂的检测与多数派治理、:global 与 Ra 的适用边界及分区恢复流程。
在 Elixir/BEAM 上构建稳定性三件套:Cachex 的 ETS 缓存架构、TTL 抖动与 fetch 单飞、缓存击穿穿透雪崩的应对、Hammer 的固定窗口/滑动窗口/漏桶/令牌桶四种限流算法与分布式后端、基于 fuse 的熔断状态机与四种降级回退形态,以及三者的组合顺序与 Telemetry 可观测指标。
深入 Elixir 元编程:AST 三元组表示与 quote/unquote 语义、defmacro 的编译期展开、卫生宏与 var!/2 的边界、@before_compile 与 __using__ 注入、用宏构建声明式 DSL 的实战,以及调试手段与过度使用的代价。
系统讲解 Elixir 生态的 GraphQL 实现 Absinthe:SDL 与代码优先的 Schema 定义、非空与接口联合类型、Resolver 与 Context 传递、Dataloader 消除 N+1、Phoenix Channels 之上的 Subscription 实时订阅、查询复杂度限制与错误处理中间件。
深入 Elixir 数值计算栈 Nx:张量形状与类型提升、命名维度与广播归约语义、EXLA/XLA 惰性编译与 JIT 缓存、Axon 模型定义与自动微分训练循环、Nx.Serving 自动批处理推理,以及与 ONNX/PyTorch 权重互操作和 NIF 阻塞调度器、进程外显存等生产陷阱。
系统讲解 BEAM 应用的容器化部署:Mix release 构建与产物结构、多阶段 Dockerfile 与镜像瘦身、runtime.exs 与 RELEASE_* 运行时配置、节点命名与 EPMD 陷阱、libcluster 的 K8s DNS 与 gossip 策略,以及滚动升级、优雅停机和健康检查。
系统讲解 Elixir 生态的认证授权方案:JWT 的三段结构与签名算法、Guardian 的配置与 Pipeline 插件链、Token 签发验证与刷新、Phoenix.Token 的适用边界、令牌吊销与密钥轮换,以及 alg=none、算法混淆、重放等常见攻击面与防御。
从 Mint 的底层连接模型讲到 Finch 的连接池策略与调优,再到 Req 的高层 API 与重试退避:系统覆盖 Elixir 调用外部 HTTP 服务的完整技术栈,包含超时分层、熔断降级、流式响应、HTTP/2 复用与 Telemetry 可观测。
系统讲解 BEAM 生态的 gRPC 技术栈:Protobuf 二进制编码原理与 .proto 语法、gpb 代码生成与 Erlang 集成、grpcbox 服务端与客户端实现、四种流式 RPC 语义、拦截器与元数据传递,以及超时、状态码与生产实践。
深入 Elixir 后台任务框架 Oban:Postgres 队列的架构与表结构、Worker 定义与返回值语义、唯一性约束与指数退避重试、Cron 定时插件、队列隔离与并发控制,以及 Telemetry 可观测、Oban Web UI 与 OTP 监督树集成。
从 GenStage 的需求驱动背压模型出发,系统讲解生产者/消费者/生产者消费者三类角色的回调契约、Flow 的分区窗口与聚合算子,以及 Broadway 构建 SQS/Kafka/RabbitMQ 生产管道的并发编排、错误处理与可观测方案。
系统讲解 rebar3 的项目结构、依赖与锁文件、profiles 配置体系、escript 与 release 打包、插件生态与 CI 集成,构建可复现的 Erlang 交付流水线。
以 Erlang 客户端为主线,讲解 AMQP 模型与交换机类型、生产消费与确认、可靠投递与幂等设计、连接池与背压、集群与运维实践。
系统讲解 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)。