Instagram 开源降低 Cassandra 延迟的 Rocksandra

Instagram 开源了降低 Apache Cassandra 数据库延迟的改进版 Rocksandra 。Instagram 于 2012 年开始使用 Cassandra 来取代 Redis ,并将其广泛用于 fraud detection(反欺诈)、Feed 和 Direct inbox 等产品和服务中。在使用过程中,他们十分认可 Cassandra 的可靠性和可用性,但在读取延迟方面看到了改进空间。

去年,Instagram Cassandra 团队开始研究开发一个名为 “Rocksandra” 的项目,用以减少 Cassandra 的P99 读取延迟(具体细节和过程可查阅博文)。

下面的图表显示的是一个 Cassandra 集群的客户端延迟。蓝线代表的是平均读取延迟(5毫秒),橙线是 P99 读取延迟(在 25-60 毫秒的范围内,基于客户端流量出现大幅变动)。

调查发现,Cassandra P99 的延迟来自于 Java 的 Full GC ,而其原因主要是 Java 写的存储引擎。作为优化,Instagram Cassandra 团队往Cassandra 里加了一层存储层的 API ,并把存储引擎换成了 C++ 写的 RocksDB 。

优化后的 Rocksandra 提供了更低也更稳定(一致)的读写延迟:

只读工作负载(read-only workload)方面,在相似的 P99 读取延迟(2ms)下,Rocksandra 可提供 10 倍的读取吞吐量(Rocksandra 为 300K / s,Cassandra 3.0.X 为 30K / s)。

Instagram Cassandra 团队表示后续还将开发更多的 Cassandra 功能支持,如二级索引(secondary indexes)、修复等,并继续研究  Cassandra 的可插拔存储引擎体系结构以回馈 Apache Cassandra 社区。 

  • 发表于:
  • 原文链接:https://www.oschina.net/news/93953/instagram-opensource-rocksandra

扫码关注云+社区

领取腾讯云代金券