我刚刚阅读了kubernetes文档中的“使用有状态集部署cassandra”主题。部署过程:1。创建storageclass 2。创建persistentvolume(在我的例子中是4 persistentvolume)。在1)storageclassname 3中创建的集合。创建Cassandra无头服务4。使用statefulset创建一个cassandra环-在statefulset yml定义的1)storageclassname中创建。
因此,有4个pod:cassandra-0、cassandra-1、cassandra-2、cassandra-4,它们被装载到2)个卷(pv-0、pv-1、pv-2、pv-3)中创建。我想知道这些持久卷如何/是否彼此同步数据。
e、 g.如果我添加一些记录,这些记录将由pod cassandra-0写入持久卷pv-0中,那么如果有人稍后要从数据库检索数据-使用cassandra-1pod/pv将看到已添加到pv-0中的数据。有人能告诉我它到底是怎么工作的吗?
4条答案
按热度按时间dauxcl2d1#
如果数据部署在kubernetes或裸机示例中,则跨集群传播数据的机制是独立的。cassandra将尝试根据散列值(称为token)在节点间随机分布数据,并使用相同的算法来检索信息。
还需要考虑其他因素:复制因素(拷贝数量)和使用的一致性级别。
你想看看
DS201: DataStax Enterprise Foundations of Apache Cassandra™
在税务学院,他们涵盖了Cassandra的基本知识。0dxa2lsx2#
这与Kubernetes无关
复制由数据库完成,并且是可配置的
请参阅Cassandra的cap定理和最终一致性
您可以控制cassandra中的一致性级别,记录是立即跨多个服务器更新还是稍后更新,这取决于您在cassandra中所做的配置。
另请参见:同步复制、异步复制
Cassandra一致性:
如何设置cassandra读写一致性
如何配置一致性级别?
velaa5lx3#
谢谢大家的评论!所以,当我的db有3个PV时:
数据分为3个pv。当我杀死cassandra-pod1时,可能会(暂时)丢失部分数据。我说得对吗?
abithluo4#
只是稍微扩展一下卡洛斯的回答,Kubernetes并没有参与其中,卷是完全孤立的。复制和分发工作完全由数据库软件来处理。在k8s看来,它们只是单独的进程和卷。