在 Cassandra 上使用 hazel cast 有什么好处吗

Are there any benefits of using hazel cast over Cassandra

我想为我的 Web 应用程序实现会话存储。这是我的申请资料。

  1. 与会话相关的信息变化不大,但 它有时会改变。
  2. 会话读取 (session.getAttribute()) 比写入 (session.setAttribute()) 更频繁。
  3. 我不想处理基于主节点的架构(如 Redis)。
  4. 与会话关联的数据很小,但会话数可能很大。
  5. 查找始终采用键值的形式,就像在哈希映射中一样。
  6. 我同意最终一致性。
  7. 我希望能够指定复制因子。即,将为给定会话保存数据的节点数
  8. 我只是在寻找不会为上述功能产生许可费用的开源解决方案。
  9. 现在我想存储多达 10,000 个会话,每个会话 10kb 数据(平均),但最终我想扩展到 100,000 个会话或更多!

在我的应用程序中,hazelcast 已用于某些其他功能。但我不希望那成为决定性因素。 Cassandra 似乎满足了我的所有要求,而且似乎很受欢迎。有什么理由让我选择 hazelcast 而不是 cassandra?

免责声明:Hazelcast 员工

总的来说,我会争辩说,如果您可以将 Hazelcast 与 Cassandra 或 Cassandra 与 Hazelcast 进行交换,那么其中一个工具就会被滥用。 我们有很多人将它们用作伴侣,这意味着 Cassandra 作为存储层,Hazelcast 作为缓存层,但是 Cassandra 不是缓存,Hazelcast 也不是数据库。

如果您想将存储持久保存到磁盘,请选择 Cassandra(可以使用 Hazelcast 添加缓存),如果您只想分发,请使用 Hazelcast。后一种情况,尤其是 "doesn't really matter" 如果您(出于某种原因或其他原因)重新启动集群,偶尔会丢失会话。

我们在项目中同时使用了它们。我们使用 Cassandra 作为持久存储,使用 Hazelcast 存储临时和频繁更改的数据(例如分布式队列和同步原语)。

Any reason I should chose hazelcast over cassandra?

在我看来,从开发人员的角度来看,Hazelcast 更容易,并且在生产环境(深度配置和调整、修复、重新启动...)上不需要像 Cassandra 那样多的关注,因此 Hazelcast 的支持成本更低.