【Rust日报】apalis:一个用简单、可扩展的多线程后台作业和消息处理库

Rust 日志框架基准测试

作者测试了 Rust 生态中常用的几种日志框架,主要是关注它们的性能差异。参与测试的框架有:

  • log 配合 env_logger: Rust 中标准的日志 Facade

  • tracing: 一个用于检测 Rust 程序以收集基于事件的结构化诊断信息的框架

  • slog: 为 Rust 提供的结构化、具上下文信息的、可扩展且可组合的日志记录功能

  • log4rs: 对标 Java log4j 和 logback 的高度可配置的日志框架

  • fern: 简单但是高效的日志实现

  • ftlog: 高性能的、零内存分配的日志框架

关键的测试结果摘要如下:

单条日志耗时(纳秒)对比

Logger

10 byte message

100 byte message

1000 byte message

env_logger

3640.22

13519.32

92334.04

fern

3888.57

11777.73

90513.74

ftlog

178.31

175.93

196.52

log4rs

3614.77

11868.81

91443.89

slog

73.04

73.53

91.77

tracing

8797.12

18502.08

98468.43

日志吞吐量对比(条/秒)

Logger

10 byte message

100 byte message

1000 byte message

env_logger

274708.51

73968.21

10830.24

fern

257163.79

84906.04

11048.05

ftlog

5608233.36

5684080.37

5088411.98

log4rs

276642.65

84254.46

10935.67

slog

13691341.61

13599441.75

10897043.22

tracing

113673.55

54047.97

10155.54

结论

  • 最快的日志记录器:根据基准测试结果,对于大多数常见用例而言,速度最快的日志记录器似乎是 slog。

  • 性能最稳定:ftlog 在不同消息大小和日志级别下表现出最为稳定的性能。

  • 最适合高吞吐量场景:slog 在高吞吐量的日志记录场景中展现出最佳性能。

最终,日志记录器的选择取决于你具体的需求。如果性能至关重要,这些基准测试结果或许能帮助你做出决策。然而,对于许多项目来说,这些差异可能微不足道,其他因素,比如易用性或功能集,可能更为重要。

Github 仓库:https://github.com/jackson211/rust_logger_benchmark

Tiny SSE: Server-Send Events 服务器

Tiny SSE 是一个轻量的支持 SSE 的服务器,采用 Rust 和 Lua 开发。它具有以下特性:

  • 灵活的消息处理 —— 可动态地对消息进行筛选、修改、重定向和重播。

  • 可靠的连接 —— 跟踪订阅者,支持重新连接,并维护会话状态。

  • 安全的访问控制 —— 实施身份验证、授权以及基于事件的限制措施。

  • 可定制的行为 —— 使用钩子函数以编程方式修改消息并管理订阅。

Github 仓库:https://github.com/benwilber/tinysse

官网:https://tinysse.com

apalis:一个用简单、可扩展的多线程后台作业和消息处理库

apalis 是一个用 Rust 编写的简单、可扩展的多线程后台作业和消息处理库。它具有以下特性:

  • 简单可预测的任务处理模型:任务处理程序只是一个异步函数,且无宏的 API 设计。

  • 依赖注入:任务处理程序采用熟悉的依赖注入方式,类似于 actix 和 axum

  • 集成 tower 生态:可以充分利用 tower 生态系统中的中间件、服务和实用工具。

  • 易于扩展:后端默认支持分布式,便于扩展。

  • 运行时无关:可以使用 tokiosmol 等不同的运行时。

  • 内置并发和并行:支持并发和并行处理任务。

  • 工人监控和优雅关闭:提供工人监控功能,并且支持优雅关闭。

  • API 暴露:能够轻松地通过 API 暴露任务和工人。

  • 持久化 Cron 作业:支持持久化 Cron 作业,并可将 Cron 作业分发到其他后端。

  • 可选的 Web 界面:提供可选的 Web 界面来管理作业。

Github 仓库:https://github.com/geofmureithi/apalis

--

From 日报小组 Yuan YQ

社区学习交流平台订阅:

  • Rustcc 论坛: 支持 RSS

  • 微信公众号:Rust语言中文社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值