Scylla 如何处理写入工作负载的积极内存刷新和压缩?

Bis*_*hnu 3 latency scylla

对于写入工作负载情况,Scylla 如何保证/保持较低的写入延迟,因为更多的写入会产生更多的内存刷新和压缩?有限制吗?如果有人可以回答,那将非常有帮助。

Scy*_*reg 5

从本质上讲,Scylla 通过并行化问题来提供一致的低延迟,然后适当地优先考虑面向用户的任务与后台任务。

并行化- Scylla 使用每线程分片架构。每个线程负责其令牌范围内的所有活动。读取、写入、压缩、修复等。

优先级- 每个线程根据任务的优先级进行调度。处理读取(查询)和写入(提交日志)等高优先级任务获得最高优先级。后台任务,例如内存表刷新、压缩和修复,仅在有空闲周期时才完成。其中 - 考虑到现代 CPU 的纳秒级 - 通常有。

如果没有足够的空闲周期,并且 RAM 或磁盘开始填满,Scylla 将提高后台任务的优先级以节省节点。因此,实际上,这会注入一些延迟。但这表明您可能规模过小,应该添加一些资源。

我建议从https://go.scylladb.com/real-time-big-data-database-principles-offer.html上的 Scylla 架构白皮书开始。在https://www.scylladb.com/resources/tech-talks/上也有很多来自 Scylla 开发者的深度演讲

例如,https: //www.scylladb.com/2020/03/26/avi-kivity-at-core-c-2019/ 深入讨论了 shard-per-core。

https://www.scylladb.com/tech-talk/oltp-or-analytics-why-not-both/深入讨论任务优先级。