本周一篇研究论文显示:通过引入类似io_uring 实现数据库 IO 异步,尾部延迟可减少 100 倍。
这是一篇关于无服务器计算环境中数据库和运行时协同设计的学术论文,标题为《Serverless Runtime / Database Co-Design With Asynchronous I/O》,由Pekka Enberg、Sasu Tarkoma、Jon Crowcroft和Ashwin Rao撰写。这篇论文发表在2024年4月22日于希腊雅典举行的第七届国际边缘系统、分析和网络研讨会(EdgeSys '24)上。以下是论文的主要内容概述:
传统方法(如使用 SQLite)利用同步 IO,这会在数据库交互过程中阻塞运行时,影响并发性和可扩展性,这对于具有多租户特性的无服务器来说并不理想。
这篇论文谈到了对 SQLite 进行异步重构,即数据库交互不会阻塞运行时,从而让运行时可以处理其他任务。
- 作者提出了“Limbo”,它重新设计了 SQLite 的架构,以通过类似 io_uring 的接口使用异步 I/O。
- Limbo 将查询引擎和存储引擎分离,允许无服务器运行时以适合其需求的方式实现 I/O 模块,例如将存储卸载到远程服务器。
- Limbo 的异步设计实现了更好的并发和多任务处理,使得无服务器运行时能够有效地支持更多租户。
- 初步评估表明,与传统同步 SQLite 相比,Limbo 可以将尾部延迟减少多达 100 倍。
- 将 SQLite 等数据库集成到无服务器运行时会带来新的隐私和安全挑战,需要通过内存隔离和安全区等机制来解决
根据论文所述,这种改进可以为无服务器或边缘运行的关键延迟敏感型工作负载提供低延迟访问。
关键词:
- #边缘计算、#无服务器计算、#进程内数据库