scylla

想象一下将Cassandra从Java重写为C ++。 Cassandra已经是最可用的NoSQL数据库之一,尽管它在负载下的最大延迟可以在高端运行,因为Java VM需要垃圾回收全局内存(GC),而Cassandra需要压缩其SSTables,两者都在时机不合时宜。

信息世界

人们尝试通过结合Cassandra和Memcached或Redis来解决不一致的延迟问题。 因此,在进行重写时,请为新数据库提供自己的缓存,并允许全扫描操作绕过该缓存以避免刷新它。

现在想象一下,使新数据库中的每个重要I / O操作异步进行,以消除等待和旋转锁。 在担心I / O时,请为数据库提供自己的I / O调度程序和负载平衡器。 最后,介绍每核心分片架构和自动调整。 现在您有了Scylla。

[ InfoWorld上的NoSQL数据库评论: Azure Cosmos DB , Couchbase Server , DataStax Enterprise , MongoDB , YugaByte DB ]

Scylla除了Cassandra之外还具有其他功能:实例化视图,全局和本地二级索引,工作负载优先级以及与DynamoDB兼容的API。 DynamoDB API是CQL(Cassandra查询语言)和与Cassandra兼容的API的补充。

Scylla还缺少DataStax Enterprise (Cassandra的商业版本)中的一些功能,例如集成的图形数据库DSE Graph 。 (Janus Graph是在DataStax接管TitanDB时从TitanDB派生的,可以使用Scylla作为其数据存储,因此缺少Scylla图形组件并不像它看起来那么重要。)

Scylla拥有单位毫秒的p99延迟,每个节点每秒可进行数百万次操作。 这两个特性意味着需要的节点数比Cassandra少(这是一个很大的因素)。 每核心分片架构意味着Scylla可以充分利用多核CPU和多CPU服务器,从而使Scylla可以在Amazon i3和i3en高I / O裸机(36核)实例上良好运行,而Cassandra在较小的4xlarge(八核)实例上表现更好。

Scylla体系结构

Scylla采用了Cassandra的大部分横向扩展架构 。 Cassandra的设计将Amazon Dynamo键值存储的分区和复制与Google Bigtable的日志结构化列系列数据模型结合在一起。 添加节点时,Cassandra和Scylla会线性缩放。

Scylla / Cassandra群集是节点的集合,组织成一个环。 群集可能在多个数据中心(DC)中具有节点。 根据CAP定理,Scyla(如Cassandra)在网络分区过程中倾向于可用性而不是一致性。

键空间是表的集合; 复制因子在键空间级别设置。 表是列和行的集合。 分区是存储在节点上并在节点之间复制的数据子集; 它由分区键表示。

Scylla使用虚拟节点(Vnode)架构。 可以为物理节点分配多个Vnode,而不必是连续的。

Scylla根据用户选择的复制策略自动复制数据。 复制因子应至少为3,以确保存在仲裁,并且如果包含一个副本的节点出现故障,则读取仍可以达到仲裁一致性的数据。

[ InfoWorld上SQL数据库评论: Azure Cosmos DB , CockroachDB , Google Cloud Spanner和YugaByte DB ]

一致性级别确定集群中有多少个副本在被认为成功之前必须确认读取或写入操作。 使用的一些最常见的一致性级别是ANY,QUARUM,ONE,LOCAL_ONE,LOCAL_QUORUM,EACH_QUORUM和ALL。 如果您具有按地理位置分布的数据中心,则出于性能原因,可能会使用LOCAL_QUORUM一致性级别进行读取,但可能会丢失远程DC的最新更新。

与Cassandra一样,Sylla使用排序字符串表(SSTable)作为其持久文件格式。 SSTables需要定期压缩以保持性能,而Scylla有四种策略可以做到这一点:大小分层,分层,时间窗口和日期分层(现在不建议使用时间窗口)。 究竟哪种压缩策略将为您带来最佳性能,取决于您的工作量。

在Cassandra中,SSTable压缩通常会在发生延迟时引起较大的延迟。 在Scylla中,压缩发生在后台,并且对延迟的影响要小得多。

除Scylla集群外,Scylla部署还可选地包括监视堆栈(用于收集和存储指标的Prometheus,用于处理警报的Alertmanager和用于显示仪表板的Grafana)和Scylla Manager(集群管理)。

Scylla部署选项

您可以在Docker,CentOS,RHEL,Ubuntu或Debian上运行Scylla。 如果选择在AWS上运行Scylla Enterprise,则可以对所选区域使用预构建的AMI。 这些AMI已针对i3和i3en实例进行了调整,但是如果您希望使用其他种类的实例,则可以运行scylla_io_setup

您可以在本地或您选择的云中安装Scylla开源或Scylla Enterprise。 您还可以在Scylla Cloud(一个完全托管的数据库即服务)中创建集群,如下面的屏幕快照所示。 目前,Scylla Cloud仅在AWS上运行。

IDG

在Scylla Cloud中创建集群的第一步是命名它,并决定是要使用Cassandra API还是DynamoDB API。 VPC对等允许另一个AWS虚拟私有云(例如运行您的应用程序的虚拟私有云)有效地使用Scylla VPC。

IDG

创建Scylla Cloud集群的第二步是选择实例大小,数据复制因子以及所需的节点数。 如果需要,您以后总是可以添加更多节点。

IDG

创建Scylla Cloud集群的最后一步是启动它。 请注意,估计的费用显示在启动按钮上。

Scylla案例研究和基准

Scylla已经针对竞争数据库做了许多基准测试。 通常这不是一件容易的事,但是Scylla很好地解释了他们遇到的问题。 此外,Scylla还宣传了一些客户案例研究,其中最令人印象深刻的是康卡斯特。

康卡斯特

在2019年Scylla峰会上,菲利普·齐米奇(Philip Zimich)进行了20分钟的演讲,内容涉及康卡斯特(Comcast)为X1 DVR平台从Cassandra过渡到Scylla 。 Comcast可以用Scylla的78个i3.4xlarge和i3.8xlarge节点替换962个m4.2xlarge的Cassandra EC2节点,总共节省了53%。 请注意,由于Java VM中的线程可伸缩性限制,Cassandra无法充分利用i3实例中的所有内核,而Scylla可以使用您提供的尽可能多的内核。

IDG

通过从Cassandra切换到Scylla,从AWS m4实例切换到i3实例,Comcast能够显着减少实现其X1记录平台后端所需的节点数量。 总体节省为53%。

Scylla 2.2和Cassandra 3.11

Scylla进行的基准测试将在i3.metal实例上运行的四节点Scylla群集与在i3.4xlarge实例上运行的40节点Cassandra群集进行了比较,这有助于弄清Comcast迁移为何能大幅降低节点和成本。 另请注意,在两年内,四节点群集具有40节点群集同时发生双重故障概率的十分之一,而实例较小的40节点群集的成本是四节点群集的2.5倍。更大的实例。

希拉

Scylla使用卡桑德拉cassandra-stress负载,将40节点i3.4xlarge Cassandra群集与四节点i3.metal Scylla群集进行了基准测试。 上表显示了配置。

希拉

Scylla开源2.2(四个i3节点)与Apache Cassandra 3.11(40 m4节点)的基准测试结果。 SLA规范是10毫秒的写入延迟; 即使在测试的三个负载中最低的情况下,Cassandra仍以99.9%的水平大大超过该值。

希拉

Scylla延迟测试(300K OPS):混合的50%写入/读取工作负载(一致性级别= Quorum)。 每个节点都是i3.metal。 CPU负载(顶部)和等待时间(底部)的峰值对应于SSTable压缩(中间)。

Scylla Cloud与Amazon DynamoDB

Scylla针对Amazon DynamoDB对Scylla Cloud进行了基准测试 。 对于涉及“热分区”的特定情况,Sylla的性能要比DynamoDB高出20倍。更普遍的是,Sylla Cloud比DynamoDB便宜得多,如下图所示。

希拉

根据Scylla的测试,Scylla Cloud的成本比Amazon DynamoDB低得多,并且还具有出色的性能。

Scylla Cloud与Google Cloud Bigtable

同样, Scylla将Scylla Cloud与Google Cloud Bigtable进行了基准比较 。 同样,Scylla以更低的成本展示了更好的延迟。

希拉

在此基准测试中,Scylla Cloud能够满足90 kOPS的SLA,对于95%的请求(每个区域一个节点)的延迟低于10 ms。 Google Cloud Bigtable每个区域需要12个节点,价格昂贵得多。

学习Scylla

我在iMac上使用Docker来遵循Scylla University的免费教程。 我没有遇到任何问题,并且Scylla数据库的性能明显优于在同一环境中运行的Cassandra或DataStax Enterprise。

Martins-iMac:~ mheller$ docker run --name scyllaU -d scylladb/scylla:3.0.10Unable to find image 'scylladb/scylla:3.0.10' locally3.0.10: Pulling from scylladb/scylla8ba884070f61: Pull completecd4f8f8c60fc: Pull complete2747a5fb8f41: Pull complete07583ab71a18: Pull complete5fcac9cdadf6: Pull completec690c84c7597: Pull complete63ea31381ef0: Pull complete551655fd09ec: Pull completea7efd0f525b1: Pull completeba3549fdb516: Pull completea6c1be1d6b52: Pull complete76fef7b03810: Pull complete26114236ac85: Pull complete402cb8658fe9: Pull completeDigest: sha256:e7f861e62f363f9080af9369ef2831039d8aeb1d6a8c3d463824831762d37f26Status: Downloaded newer image for scylladb/scylla:3.0.10b08c289fe6e5d55b178bb342391540a942c9bc1aa27206f3e23c718fdb69c23fMartins-iMac:~ mheller$ docker exec -it scyllaU nodetool statusDatacenter: datacenter1=======================Status=Up/Down|/ State=Normal/Leaving/Joining/Moving--  Address     Load       Tokens       Owns    Host ID                               RackUN  172.17.0.2  458.45 KB  256          ?       d1c04d54-4da1-46be-9f2f-e167cd1d6e95  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaninglessMartins-iMac:~ mheller$ docker exec -it scyllaU cqlshConnected to  at 172.17.0.2:9042.[cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4]Use HELP for help.cqlsh> CREATE KEYSPACE mykeyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1};cqlsh> use mykeyspace;cqlsh:mykeyspace> CREATE TABLE users ( user_id int, fname text, lname text, PRIMARY KEY((user_id)));cqlsh:mykeyspace>cqlsh:mykeyspace> insert into users(user_id, fname, lname) values (1, 'rick', 'sanchez');cqlsh:mykeyspace> insert into users(user_id, fname, lname) values (4, 'rust', 'cohle');cqlsh:mykeyspace> select * from users;

 user_id | fname | lname ---------+-------+---------       1 |  rick | sanchez       4 |  rust |   cohle

 (2 rows)cqlsh:mykeyspace>

以上课程代表第一堂课。 我继续学习更多的课程并进行了一些测验,但是我发现教程中没有任何偏离之处。

Scylla与众不同

总体而言,Scylla是一个非常出色的NoSQL数据库。 虽然从Java到C ++重写数据库(Cassandra)似乎是一件显而易见的事情,但要实现更好的可伸缩性和更一致的延迟,Scylla还有其他优化功能,例如自调整。 这是超出我期望的稀有产品。

Scylla是否将满足您应用程序的需求是一个复杂的问题。 我建议遵循我在“如何为您的应用程序选择数据库”中列出的主题:从您的需求开始,然后将它们用作筛子,以消除不适用于您的数据库。 如果Scylla成为您的候选清单,请花时间进行概念验证。

-

成本:开源:对于无限节点免费,但是Scylla Manager限于五个节点。 企业:联系Scylla。 云:根据服务器的大小,每个服务器每月$ 191至$ 17,520。 最少三台服务器。

平台: Docker,AWS,RHEL 7,CentOS 7,Debian,Ubuntu,VirtualBox。

翻译自: https://www.infoworld.com/article/3490383/scylla-review-apache-cassandra-supercharged.html

scylla

scylla_Scylla评论:Apache Cassandra增压相关推荐

  1. 使用Apache Cassandra设置SpringData项目

    在这篇文章中,我们将使用Gradle和spring boot来创建一个集成spring-mvc和Apache Cassandra数据库的项目. 首先,我们将从Gradle配置开始 group 'com ...

  2. 使用Apache Cassandra设置一个SpringData项目

    在这篇文章中,我们将使用Gradle和spring boot来创建一个将spring-mvc和Apache Cassandra数据库集成在一起的项目. 首先,我们将从Gradle配置开始 group ...

  3. Apache Cassandra和低延迟应用程序

    介绍 多年来, Grid Dynamics拥有许多与NoSQL相关的项目,尤其是Apache Cassandra. 在这篇文章中,我们要讨论一个给我们带来挑战的项目,而我们在该项目中试图回答的问题今天 ...

  4. Apache Cassandra和Java入门(第一部分)

    在此页面上,您将学到足够的知识来开始使用NoSQL Apache Cassandra和Java,包括如何安装,尝试一些基本命令以及下一步做什么. 要求 要遵循本教程,您应该已经有一个正在运行的Cass ...

  5. Apache Cassandra和Java入门(第二部分)

    要求 要遵循本教程,您应该已经有一个正在运行的Cassandra实例( 一个小型集群会很好 ,但不是必需的),已安装Datastax Java驱动程序( 请参阅第I部分 ),并且已经在这里进行了10分 ...

  6. Apache Cassandra 1.1.0 稳定版发布

    Apache Cassandra团队今天正式推出了1.1分支的首个稳定版1.1.0版本. Apache Cassandra是一套开源的分布式 NoSQL 数据库系统,遵循 Apache Lience ...

  7. Apache Cassandra 数据存储模型

    我们在<Apache Cassandra 简介>文章中介绍了 Cassandra 的数据模型类似于 Google 的 Bigtable,对应的开源实现为 Apache HBase,而且我们 ...

  8. Apache Cassandra 在 Facebook 的应用

    谁说 Facebook 弃用 Cassandra?相反 Facebook 拥有全世界最大的单个 Cassandra 集群部署,而且他们对 Cassandra 做了很多性能优化,包括 Cassandra ...

  9. Apache Cassandra和Apache Ignite:分布式数据库的明智之选

    为什么80%的码农都做不了架构师?>>>    Apache Cassandra应用广泛,是一个开源的.分布式的.键值存储列模式NoSQL数据库,支撑了很多大公司的关键业务,比如Ne ...

最新文章

  1. 服不服?40行Python代码,实现卷积特征可视化
  2. QT编译发布程序后报错如缺少dll、“应用程序无法正常启动(0xc000007b)”的可能解决方法
  3. 【Matlab】找到矩阵中每个连通域的最小值
  4. Swift之深入解析“指针”的使用和实现
  5. oracle定时任务会漂移,定时任务与手动执行脚本时的一个重要注意事项
  6. 经典面试题(41):以下代码将输出的结果是什么?
  7. 在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的。此外还有些不同的特征,比如,圆形都有半径,可以根据半
  8. jquery class选择器循环_web前端教程分享Jquery常见面试题
  9. 25+开源的在线购物软件(PHP, JavaScript 和 ASP.Net)
  10. Linux运维工程师,你能把iptables玩转麽?
  11. 《第一行代码Android(第3版)》— Android 书籍
  12. 最新修复版微信H5漂流瓶V2.0更新版本 社交漂流瓶H5源码
  13. 级数 p级数 q级数 调和级数为什么叫做“调和”级数 等比数列求和公式和等差数列求和 斜率:
  14. 高等数学(下)思维导图
  15. TrafficMonitor:最好用的网速/内存/CPU监控软件
  16. 第一个爬图片的程序(xkcd.com)
  17. C++之auto关键字
  18. 加密货币工具和算法大合集
  19. 从头开始构建一台8位计算机 - 完整的零件清单
  20. linux下运行eureka,Linux服务器重启后eureka报错

热门文章

  1. 数字藏品的价值是什么?
  2. ThreadPoolExecutor参数解析
  3. 二哥回复读者:研三秋招一败涂地了,怎么办?
  4. 网站前端联系我们之点击自动打开qq/Tim对话窗口
  5. python笛卡尔坐标系_THREE笛卡尔右手坐标系详解
  6. 七分之一在线评论都有假,人工智能救一把?
  7. 别出心裁的Linux系统调用学习法
  8. iPhone麦田守望者》
  9. vue 调起浏览器打印
  10. 5步教你成功求职进入BAT