【Rust日报】headway - 自托管地图栈

科技   2024-12-19 23:25   重庆  

文章 - 更快的SQLite

这篇文章讨论了论文 “Serverless Runtime / Database Co-Design With Asynchronous I/O”,探讨了通过 异步 I/O存储解耦 来提升 SQLite 性能的方法。SQLite 通常使用 同步 I/O,当处理多个查询时,尤其是在 无服务器边缘计算 环境中,它可能会导致性能瓶颈。研究人员提出使用 io_uring 这一 Linux 内核的异步 I/O 子系统来改善 SQLite 的性能。

io_uring 允许应用程序提交 I/O 请求并并行执行其他任务,从而减少 I/O 操作的阻塞时间。而传统的 SQLite 在处理磁盘 I/O 时会阻塞线程,这对于高并发场景非常不利。文章中还解释了 SQLite 查询的执行过程,SQLite 将 SQL 语句转换为字节码并逐步执行,而每次执行都可能涉及磁盘 I/O,这会导致线程阻塞。同步 I/O 阻塞线程直到数据从磁盘读取完成,这种方式在高并发情况下显得效率较低。

为了解决这些问题,作者决定用 Rust 重写 SQLite,并实现 io_uring 异步 I/O。重写后的数据库 Limbo 使用异步字节码指令替换了传统的同步指令,从而实现了更高效的并发处理。此外,作者还提出了 存储解耦 的概念,将查询引擎和存储引擎分开,以提高资源利用率,特别是在多租户的无服务器环境中。

在性能评估方面,研究人员在 多租户无服务器环境 中进行基准测试,结果表明 Limbo 在 尾部延迟(p999)上相比传统的 SQLite 提高了 100倍,在高并发下表现更为优秀。相比之下,SQLite 在增加线程数时性能急剧下降,而 Limbo 更好地管理了并发,减少了阻塞。

总的来说,通过将 SQLite 转换为使用 异步 I/Oio_uring,并采用 存储解耦 模型,Limbo 在高并发和低延迟的场景中表现出显著的性能优势,尤其适用于无服务器应用。

https://avi.im/blag/2024/faster-sqlite/

headway - 自托管地图栈

数据由 OpenStreetMap 支撑,完全自托管的地图栈。

https://github.com/headwaymaps/headway

SeekStorm - 亚毫秒级的全文搜索库和多租户服务器

SeekStorm 是一个开源的、亚毫秒级的全文搜索库和多租户服务器,使用 Rust 实现。

该项目于 2015 年开始开发,2020 年开始投入生产,2023 年实现了 Rust 版本,2024 年开源,目前仍在持续开发中。

https://github.com/SeekStorm/SeekStorm

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区


Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
 最新文章