是否可能实现至少10倍的性能提升,相比原始的Kafka和Cassandra?如何实现?有哪些权衡考虑?
有一类存储软件,如Redpanda和ScyllaDB,它们声称至少可以提高一个数量级的性能。
在下面的图表中,Redpanda可以与Kafka进行比较,而ScyllaDB类似于NoSQL的Cassandra。
?无JVM,无GC Kafka和Cassandra是用JVM兼容的语言编写的,通常会受到高尾延迟的影响,其中平均延迟表现良好,但由于垃圾回收(GC)的影响,99%的延迟并不好。 Redpanda和ScyllaDB从头开始使用C++进行重写,并利用了一些新的框架(例如,SeaStar)。它们很难编码,但可以实现更高的性能(详细的性能指标请见下面的图表)。?分享-无架构 每个请求都被固定到一个CPU核心。核心之间没有内存争用。这也对NUMA(非一致性内存访问)架构友好,因此线程可以访问更接近CPU核心的内存。?零复制网络 使用SeaStar框架,这两个产品可以直接在用户模式下访问网络设备,内核不会介入。零复制,零锁定和零上下文切换。
自Apache Kafka和Apache Cassandra革命了软件行业处理大量数据的方式以来已经过去了十年。
自那时以来,服务器CPU核心数量增长了10倍。内存从64GB增长到半TB。NVMe SSD驱动器比十年前的旋转磁盘快100倍。25Gbps的网络带宽已经很普遍。
一种新的软件类别已经进入市场,以利用这种趋势。我们撰写了这篇文章,以提高对这种趋势的认识。
趋势
许多公司正在采用这些新型软件来取代 Kafka 和 Cassandra,并从更高的性能、更低的延迟和更好的可扩展性中受益。
?Uber:将 Kafka 消息总线替换为 Redpanda。?NTT Communications:将 Cassandra 数据库替换为 ScyllaDB。?Zilliqa:使用 Redpanda 作为其公共区块链的事务引擎。?AdGear:使用 ScyllaDB 作为其实时竞价广告系统的后端。?Beeswax:使用 Redpanda 作为其实时广告交换的数据总线。?Boxever:使用 ScyllaDB 作为其实时数据平台的后端数据库。
总结
主要介绍了一类新型存储软件,如Redpanda和ScyllaDB,它们声称可以至少比Kafka和Cassandra快10倍。这些软件的性能提升的实现方式是:使用C++进行重写,避免了JVM和GC所带来的尾延迟问题;采用共享无状态体系结构,使每个请求都针对一个CPU核心进行处理,避免了核心之间的内存争用;采用零拷贝网络技术,通过SeaStar框架直接在用户模式下访问网络设备,避免了内核介入,从而实现了零拷贝、零锁定和零上下文切换。这些新型软件利用了现代硬件的优势,以适应当今数据处理的需求。
原创文章,作者:小技术君,如若转载,请注明出处:https://www.sudun.com/ask/33840.html