【T112017-数据工程和技术分会场】SCYLLA+-+NoSQL+at+Ludicrous+Speed_37页_9mb
报告摘要
ScyllaDB 总结
核心内容
ScyllaDB 是一个高性能的 NoSQL 数据库,旨在提供与 Apache Cassandra 兼容的同时,实现无妥协的性能和可用性。它由 KVM 虚拟化技术的创建者开发,自 2014 年成立以来,逐步转型为数据库领域,并在 2016 年正式发布。ScyllaDB 通过采用 C++ 编写,结合先进的架构设计,显著提升了数据库的吞吐量、延迟和扩展性。
主要观点
- 高性能:ScyllaDB 提供了比 Cassandra 更高的吞吐量和更低的延迟,例如在某些测试中,吞吐量达到 24 倍,平均延迟降低 50%。
- 无缓存设计:ScyllaDB 不使用缓存,直接在内存中处理数据,从而减少了缓存失效和复杂性。
- 线性扩展:ScyllaDB 支持线性扩展,通过每个核心分配一个分片(shard-per-core)的方式实现高效利用多核处理器。
- 零拷贝技术:ScyllaDB 使用零拷贝技术,减少了数据传输的开销,提高了 I/O 效率。
- 高可用性(HA):ScyllaDB 提供了业界领先的高可用性和灾难恢复(DR)能力。
- 简化运维:通过自动调优和动态调度,减少了数据库的运维复杂度,提升了系统稳定性。
关键信息
技术特点
- C++ 实现:ScyllaDB 采用 C++ 编写,避免了 Java 虚拟机(JVM)的性能瓶颈,如垃圾回收(GC)问题。
- 任务调度器:ScyllaDB 自带任务调度器,支持无共享的并行事件处理,提升了任务执行效率。
- 统一缓存:ScyllaDB 采用统一缓存机制,将数据直接缓存在内存中,提高了数据访问速度。
- NUMA 友好:优化了 NUMA 架构下的性能,确保多核处理器的高效利用。
- 日志结构化分配器:使用日志结构化分配器,提高了存储效率和 I/O 性能。
- DMA 支持:支持直接内存访问(DMA),减少了数据传输的延迟。
- 日志结构化合并树(LSM Tree):采用 LSM Tree 架构,支持高效的写入和读取操作。
系统架构
- 网络栈优化:ScyllaDB 使用用户空间的 TCP/IP 协议栈,避免了内核态的性能损耗。
- 多队列与轮询模式:通过多队列和轮询模式,优化了网络 I/O 的并发处理能力。
- 无锁设计:采用无锁(lock-free)机制,减少了锁竞争带来的性能损耗。
- 反应式编程:支持反应式编程模型,提升了系统的响应能力和吞吐量。
实际应用案例
- AppNexus:通过使用 ScyllaDB,AppNexus 能够减少硬件成本并实现更高的吞吐量和更低的延迟。
- musical.ly:ScyllaDB 使 musical.ly 的延迟降至个位数毫秒,无需修改任何代码。
- Investing.com:ScyllaDB 的使用显著降低了延迟和 GC 问题,并减少了集群规模。
- Outbrain:ScyllaDB 通过消除缓存需求,简化了架构并提升了整体性能。
未来发展
- 1.7 版本:2017 年 5 月发布,新增功能包括计数器、新的节点内分片算法、SStableloader 等。
- 2.0 版本:2017 年 9 月发布,引入了物化视图、部分行缓存和热权重负载均衡等功能。
- 企业版发布:基于 1.6 版本的企业版将在未来发布,进一步增强其在企业环境中的适用性。
与其他系统的对比
- Cassandra:ScyllaDB 在吞吐量、延迟和硬件利用率方面显著优于 Cassandra,尤其是在处理高并发和大规模数据时。
- Memcached:ScyllaDB 无需在数据库前使用缓存,简化了架构并减少了缓存失效的风险。
- HBase、Redis、MySQL、MongoDB:ScyllaDB 提供了统一的解决方案,可以替代这些系统,减少运维复杂度。
总结
ScyllaDB 是一个高性能、高可用、易于运维的 NoSQL 数据库,其通过 C++ 实现、无锁设计、任务调度器和网络栈优化等技术手段,实现了与 Cassandra 兼容的同时,大幅提升性能和扩展性。它适用于需要处理高并发、大规模数据的场景,并且能够替代多个传统数据库系统,成为企业级数据存储的理想选择。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载