2011-11-16 15 views
6

Considérese siguiente configuración Cassandra:Cassandra - carga del lado del cliente de equilibrio

  • anillo de 6 nodos: A, B, D, E, F, G
  • replicación factor de: 3
  • particionador: RandomPartitioner
  • estrategia
  • colocación: SimpleStrategy

Mi Test-columna se almacena en el nodo B y se replica a los nodos D y E.

Ahora tienen varios procesos Java leer mi columna a través de los ensayos Héctor API (Ahorro) con CL.ONE lectura

hay dos posibilidades:

  1. Héctor reenviará todas las llamadas al nodo B, ya B es el dato maestro
  2. Hector cargará el saldo de las llamadas de lectura a través del nodo B, D y E (maestro y repeticiones). En este caso, mi columna de prueba se cargaría en el caché en cada instancia de Cassandra.

¿Cuál es 1) o 2)?

Gracias y saludos, Maciej

Respuesta

4

creo que es: 3) Cassandra desvía todas las llamadas al nodo más cercano que está vivo, donde "cercanía" está determinada por la Snitch se utiliza actualmente (conjunto de Cassandra. yaml).

  • SimpleSnitch elige el nodo más cercano en el anillo de token.
  • AbstractNetworkTopologySnitch y snitches derivados primero intentan elegir nodos en el mismo rack, luego nodos en el mismo centro de datos.

Si DynamicSnitch está habilitado, ajusta dinámicamente la cercanía del nodo devuelta por la snitch subyacente, según el rendimiento reciente de los nodos.

Consulte Cassandra ArchitectureInternals en "Leer ruta" para obtener más información.

2

(Vota la respuesta de Theodore porque es corect). Algunos detalles adicionales:

No hacemos nada en el lado de hector para enrutar el tráfico a un nodo dado basado en la clave (todavía). Esto se denominó "selecciones mediadas por el cliente" en la sección 6.2 del documento Amazon Dynamo. La investigación parece indicar que realmente solo es útil para clusters muy grandes al cortar un salto de red.

El inconveniente sería la duplicación del cálculo de hash y la búsqueda de particiones en el cliente.

Cuestiones relacionadas