关于服务
翻译我构建的 Erlang/OTP 系统应该能够工作多年,而不是几小时。我的工作涉及软件,其中停机意味着不仅仅是带来不便,而是整个业务的崩溃:支付网关、消息后端、实时信号节点、物联网设备群、会话代理和服务数百万个同时连接的电信平台。如果您需要一个能够在崩溃、网络中断和自身错误的情况下生存的服务,而不需要在凌晨三点叫醒任何人——这正是我多年来研究的并发模型。
我的工作依赖于 OTP 工具包,而不是自制的进程。我设计完整的监督树,以便将故障隔离在尽可能小的节点中,并干净地重启,而不是触发一系列故障。我按照预期应用 gen_server、gen_statem 和应用行为,将每个连接或任务建模为一个独立的轻量级进程,并依赖于“让它崩溃”的哲学,这简化了代码并使恢复自动化。当负载需求时,我将节点分布在机器上,添加集群和状态转移,调整调度程序和内存,以便在压力下保持吞吐量的可预测性。
除了主要场景外,我还做 Erlang 被选择的事情:热代码更新和发布处理,允许在不破坏实时会话的情况下进行部署,反压和流控制,以便峰值不会崩溃节点,以及通过内置跟踪和指标实现可观察性。我可以将项目从零推进到首次发布再到生产,拯救一个已经变得脆弱的现有 Erlang 代码库,或加入您的团队以提高可靠性。每个项目都附带测试、负载基准和清晰的文档。
您通常会获得的内容:
— 监督树和应用程序的架构
— 进程建模 gen_server / gen_statem 和 OTP 发布
— 分布、集群和节点交接
— 热代码更新和无停机部署
— 负载测试、跟踪和战斗准备
我的工作依赖于 OTP 工具包,而不是自制的进程。我设计完整的监督树,以便将故障隔离在尽可能小的节点中,并干净地重启,而不是触发一系列故障。我按照预期应用 gen_server、gen_statem 和应用行为,将每个连接或任务建模为一个独立的轻量级进程,并依赖于“让它崩溃”的哲学,这简化了代码并使恢复自动化。当负载需求时,我将节点分布在机器上,添加集群和状态转移,调整调度程序和内存,以便在压力下保持吞吐量的可预测性。
除了主要场景外,我还做 Erlang 被选择的事情:热代码更新和发布处理,允许在不破坏实时会话的情况下进行部署,反压和流控制,以便峰值不会崩溃节点,以及通过内置跟踪和指标实现可观察性。我可以将项目从零推进到首次发布再到生产,拯救一个已经变得脆弱的现有 Erlang 代码库,或加入您的团队以提高可靠性。每个项目都附带测试、负载基准和清晰的文档。
您通常会获得的内容:
— 监督树和应用程序的架构
— 进程建模 gen_server / gen_statem 和 OTP 发布
— 分布、集群和节点交接
— 热代码更新和无停机部署
— 负载测试、跟踪和战斗准备