Cassandra作为嵌入式服务并具有自定义一致性级别

时间:2012-10-10 19:46:49

标签: cassandra

我正在考虑构建一个使用Cassandra作为其数据存储的应用程序,但具有低延迟要求。我知道来自this blog post

EmbeddedCassandraService

以下实施是否可行以及已知的缺陷(缺陷,功能限制)?

1)将Cassandra作为嵌入式服务运行,将数据保存到磁盘(持久)。

2)Java应用程序通过以下之一与本地嵌入式服务进行交互。什么是专业人士

  • TMemoryBuffer(或更合适的东西?)
  • StorageProxy(使用此API的缺陷是什么?)
  • Apache Avro? (见下面的问题#5)

3)Java应用程序通过Thrift(或Avro?)与远程Cassandra服务(“备份”节点)进行交互。

4)写入必须始终成功到本地嵌入式Cassandra服务才能获得成功,并且至少有一个远程(非嵌入式)Cassandra节点。这可能吗?是否可以定义自定义/复杂一致性级别?

5)附带问题: Cassandra:权威指南在几个地方提到Thrift最终会被Avro取代,但似乎现在还不是这样吗?

正如您可能猜到的,我是Cassandra的新手,所以对特定文档页面(不是wiki主页)或示例项目的任何指示都表示赞赏。

1 个答案:

答案 0 :(得分:1)

除非您的整个数据库都位于本地计算机上(即单个节点),否则此配置无法获得任何结果。 Cassandra会在整个集群中对您的数据进行分片,因此(如其中一条评论中所述)您的写入将经常发送到拥有该数据的另一个节点。假设您使用至少为1的一致性级别进行编写,则您的调用将阻塞,直到该另一个节点执行写入操作。这无视与嵌入式实例通信的任何好处,因为无论如何你都有一些网络延迟。