Cloudflare 基础:一个全面的 Rust 库,用于构建健壮、可扩展的服务

Cloudflare 发布 Foundations:开源 Rust 服务基础库

Cloudflare 宣布发布 Foundations,这是一个强大的 Rust 库,用于构建分布式、生产级别的系统。该库最初是作为 Oxy 代理框架的一部分开发的,现已演变为一个多功能库,旨在简化大规模服务的部署和管理。Foundations 是开源项目,工程师可以利用它专注于核心业务逻辑,而不必陷入复杂的生产操作设置中。

Foundations 的核心目标

Foundations 旨在解决从简单的本地原型过渡到全球生产环境中的成熟服务时所面临的挑战。其主要区别在于提供了可观测性、配置和安全性。基于 Cloudflare 在开发众多服务中的经验,Foundations 为这些关键问题提供了全面的解决方案。

Foundations 的开发原则

  • 高模块化:Foundations 设计为高度模块化,允许团队逐步采用单个组件,便于现有服务的平滑过渡。
  • API 易用性:Foundations 优先考虑用户友好的交互,利用 Rust 的过程宏提供直观且文档齐全的 API,减少使用中的摩擦。
  • 简化的设置和配置:Foundations 旨在实现“即插即用”,提供立即工作的基本功能,同时提供可调整的设置以进行微调。设置简化的重点是为特定的生产测试环境量身定制。

Foundations 的核心组件

Foundations 提供了大多数服务所需的核心组件:

  • 日志记录:记录任意文本信息,帮助记录操作错误。
  • 追踪:提供服务组件的详细时间分解,用于识别性能瓶颈。
  • 指标:提供定量数据点,用于监控系统的整体健康和性能。

日志记录与追踪

Foundations 的日志记录 API 基于 tokio/tracing 和 slog,并引入了处理分层日志上下文信息的增强功能。利用未来的仪器机制,Foundations 能够隐式传递每个请求的当前记录器,简化流程并防止业务逻辑受阻。

Foundations 中的追踪与 tokio/tracing 类似,但在以下方面有所不同:

  • 简化的 API:Foundations 简化了追踪的设置过程,采用了极简主义方法。
  • 增强的追踪采样灵活性:允许在特定代码分支中选择性覆盖采样比率,以进行详细的性能调查。
  • 分布式追踪拼接:支持整合来自多个服务的追踪数据,提供整个管道的全面视图。
  • 追踪分叉能力:解决了长时间连接中多个复用请求的挑战,简化了分析并提高了性能。

指标与内存分析

Foundations 集成了官方的 Prometheus Rust 客户端库,提供了易用性增强,并引入了过程宏以简化带有类型标签的新指标的定义。此外,Foundations 还实现了内存分析功能,使用 jemalloc 内存分配,并通过简单且安全的 Rust API 进行集成。

安全性与 seccomp

Foundations 通过 seccomp(Linux 内核的系统调用沙盒功能)提供了强大且易用的 API,增加了对威胁的安全性防护。Foundations 提供了一种简单的方式来允许系统调用,并允许多个列表的组合。

Cloudflare 团队的反馈

Cloudflare 团队表示,Foundations 在减少开发摩擦方面发挥了重要作用。他们认为这对社区也有用,因此决定开源 Foundations 库。

阅读 30
0 条评论