1

我正在考虑构建一个使用 Cassandra 作为其数据存储但具有低延迟要求的应用程序。我EmbeddedCassandraService这篇博文中知道

以下实现是否可行?已知的缺陷是什么(缺陷、功能限制)?

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

2) Java 应用程序通过以下方式之一与本地嵌入式服务交互。有哪些优点

  • TMemoryBuffer(或更合适的东西?)
  • StorageProxy(使用这个 API 有什么陷阱?)
  • 阿帕奇阿弗罗?(见下面的问题#5)

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

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

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

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

4

1 回答 1

1

除非您的整个数据库都位于本地机器上(即单个节点),否则您不会通过此配置获得任何收益。Cassandra 将在集群中对您的数据进行分片,因此(如其中一条评论中所述)您的写入将经常发送到拥有数据的另一个节点。假设您以至少 1 的一致性级别写入,您的调用将阻塞,直到该其他节点确认写入。这抵消了与嵌入式实例交谈的任何好处,因为无论如何您都有一些网络延迟。

于 2012-10-11T13:33:05.257 回答