Cassandra 卡桑德拉:数据复制不起作用?
我们有一个6节点的cassandra集群,每秒有大量的读取和很少的写入。整个应用程序包括:Cassandra 卡桑德拉:数据复制不起作用?,cassandra,Cassandra,我们有一个6节点的cassandra集群,每秒有大量的读取和很少的写入。整个应用程序包括: 使用一个cassandra节点的web应用服务器 5台web服务计算机,每台使用自己的cassandra节点(pycassa的池服务器列表始终为一个节点) 与cassandra交谈的Web应用程序正在执行读写操作(但很少,只有在有人实际使用应用程序UI时,这种情况并不经常发生)。然而,Web服务承载着来自第三方服务的大量流量。负载平衡器将流量定向到所有5台服务器,每台服务器都会用大量get()和mul
- 使用一个cassandra节点的web应用服务器
- 5台web服务计算机,每台使用自己的cassandra节点(pycassa的池服务器列表始终为一个节点)
我希望你明白我的意思。。。如果复制因子等于环中的节点数,并且读取一致性级别为默认值(1),则每个节点在读取方面应该是独立的:如果没有人从给定节点执行任何读取,则此节点上的CPU使用应该是最小的,对吗?然而,即使我们断开唯一一个看到该节点的客户机的连接,我们仍然观察到高CPU使用率,就好像有人仍在不断地从它读取数据一样。这个负载是从哪里来的,如何能够调查发生了什么?如果我错了,请纠正我,但我猜您在集群中的节点上看到的负载是在后台发生的读取修复。当您在群集中的某个节点上读取ConsistenceLevel.ONE时,数据将立即返回,读取操作将在后台触发读取修复,这将向所有其他副本发送请求数据的摘要查询,以确保一致性。
由于复制系数为6(所有节点上的所有数据),因此对于每次读取,将向所有6个节点发送读取修复请求
是的,负载肯定是由读取修复引起的。解决方案是将读修复机会降低到非常接近于零的水平(如0.00001),并对写操作使用高并发级别(如5)。非常感谢,我完全忽略了读修复,没有意识到它会导致这么多负载。