docs: restyle the one-page competition proposal
MoonResilience 是一个使用 MoonBit 编写的弹性治理基础库,用于服务调用、后台任务、消息消费和基础工具中的故障隔离与恢复。项目不绑定 HTTP 框架和系统时钟,调用方可以按需要接入现有应用。
key=value
当前版本包含约 4.5k 行有效 MoonBit 代码和 100 项测试。核心包没有第三方依赖。
两个仓库同步发布,默认分支为 master。
master
环境要求:已安装当前稳定版 MoonBit 工具链。
moon check moon test moon run cmd/main
CLI 会运行一个“上游连续两次超时、第三次恢复”的确定性场景,并输出尝试次数、虚拟时间线和指标摘要。
let chain = @moonresilience.policy_chain( @moonresilience.retry_policy( 4, 5000, @moonresilience.exponential_backoff(100, 1000), ["timeout"], ), @moonresilience.new_circuit_breaker( @moonresilience.circuit_breaker_config(4, 1, 2000, 1), ), TokenBucketPolicy( @moonresilience.new_token_bucket( @moonresilience.token_bucket_config(20, 20, 1000), 0, ), ), @moonresilience.new_bulkhead( @moonresilience.bulkhead_config(4, 8), ), ) let result = @moonresilience.execute_with( chain, @moonresilience.execution_context(0, "inventory.query"), fn(attempt, _now_ms) { if attempt < 3 { Failure(@moonresilience.retryable_failure("timeout", "upstream timeout")) } else { Success("ok") } }, )
配置方式参见 examples/resilience.conf,完整接口说明参见 docs/API.md。接入网络客户端前请阅读 docs/HTTP_ADAPTER.md 中的错误分类和状态保存说明。
examples/resilience.conf
docs/API.md
docs/HTTP_ADAPTER.md
execute_with 使用固定顺序,便于预测资源消耗和拒绝原因:
execute_with
同步执行入口不会等待 Bulkhead 队列。进入等待队列时会返回 RejectedByBulkhead,调用方可使用独立调度器处理排队请求。
RejectedByBulkhead
retry.max_attempts=4 retry.max_elapsed_ms=5000 retry.backoff=exponential retry.base_delay_ms=100 retry.max_delay_ms=1000 breaker.failure_threshold=4 breaker.success_threshold=1 breaker.open_window_ms=2000 limiter.kind=token_bucket limiter.capacity=20 limiter.refill_tokens=20 limiter.window_ms=1000 bulkhead.max_concurrent=4 bulkhead.max_waiting=8
parse_config 会忽略空行和以 # 开头的注释。未知字段、非整数值和约束冲突会返回带行号的 ConfigError。
parse_config
#
ConfigError
. ├── retry.mbt # 重试与退避 ├── circuit_breaker.mbt # 熔断器状态机 ├── rate_limiter.mbt # 两类限流器 ├── bulkhead.mbt # 并发隔离与等待队列 ├── policy_chain.mbt # 统一执行入口 ├── telemetry.mbt # 事件与计数指标 ├── latency.mbt # 延迟分桶 ├── metrics_export.mbt # Prometheus 文本导出 ├── config.mbt # 配置解析与校验 ├── simulation.mbt # 确定性故障模拟 ├── diagnostics.mbt # 健康状态与不变量检查 ├── registry.mbt # 命名策略目录 ├── batch.mbt # 批量场景执行 ├── cmd/main # 可运行示例 └── docs # API、架构与比赛材料
moon info moon fmt moon check --warn-list +73 moon test moon run cmd/main moon coverage analyze
提交代码前请阅读 CONTRIBUTING.md。版本变化记录在 CHANGELOG.md,后续工作记录在 ROADMAP.md。
CONTRIBUTING.md
CHANGELOG.md
ROADMAP.md
Apache-2.0,详见 LICENSE。
LICENSE
面向 MoonBit 服务端、任务执行和基础工具场景的弹性治理基础库,提供统一的重试策略、熔断、限流、并发隔离和策略组合能力,可用于 HTTP 调用保护、消息消费控制、后台作业调度保护等场景。项目首版聚焦纯 MoonBit 核心能力和可运行示例,后续可继续扩展指标钩子、配置加载和框架适配。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonResilience
MoonResilience 是一个使用 MoonBit 编写的弹性治理基础库,用于服务调用、后台任务、消息消费和基础工具中的故障隔离与恢复。项目不绑定 HTTP 框架和系统时钟,调用方可以按需要接入现有应用。
功能范围
key=value配置解析、默认值、字段校验和错误行定位。当前版本包含约 4.5k 行有效 MoonBit 代码和 100 项测试。核心包没有第三方依赖。
仓库
两个仓库同步发布,默认分支为
master。快速开始
环境要求:已安装当前稳定版 MoonBit 工具链。
CLI 会运行一个“上游连续两次超时、第三次恢复”的确定性场景,并输出尝试次数、虚拟时间线和指标摘要。
基本用法
配置方式参见
examples/resilience.conf,完整接口说明参见docs/API.md。接入网络客户端前请阅读docs/HTTP_ADAPTER.md中的错误分类和状态保存说明。执行顺序
execute_with使用固定顺序,便于预测资源消耗和拒绝原因:同步执行入口不会等待 Bulkhead 队列。进入等待队列时会返回
RejectedByBulkhead,调用方可使用独立调度器处理排队请求。配置
parse_config会忽略空行和以#开头的注释。未知字段、非整数值和约束冲突会返回带行号的ConfigError。项目结构
开发与验证
提交代码前请阅读
CONTRIBUTING.md。版本变化记录在CHANGELOG.md,后续工作记录在ROADMAP.md。当前边界
许可证
Apache-2.0,详见
LICENSE。