Translate
domingo, 17 de marzo de 2019
Rings and Tokens en Apache Cassandra
Veamos cómo Cassandra distribuye los datos a través de estos nodos.
Cassandra representa los datos gestionados por un grupo como un anillo. A cada nodo del anillo se le asigna uno o más rangos de datos descritos por un token, que determina su posición en el anillo. Un token es un ID de entero de 64 bits que se utiliza para identificar cada partición. Esto da un rango posible para tokens de –2 a la 63 a 2 a la 63 –1.
Un nodo pide un token entre este rango y mayor que el token del nodo anterior. El nodo con el token más bajo posee el rango menor o igual que su token y el rango mayor que el token más alto, que también se conoce como el "rango de ajuste". De esta manera, los tokens especifican un anillo completo. El anillo incluye los nodos en un solo centro de datos. Esta disposición particular está estructurada de tal manera que los rangos de token consecutivos se reparten entre nodos en diferentes racks.
Los datos se asignan a los nodos utilizando una función hash para calcular un token para la clave de partición. Este token de clave de partición se compara con los valores de token de los distintos nodos para identificar el rango y, por lo tanto, el nodo que posee los datos. Los intervalos de tokens están representados por la clase org.apache.cassandra.dht.Range.