Replicación, controlador Datastax Php y cifrado SSL – Apache Cassandra – parte 2
Tiempo total: 1 días con 18:14:42 hrs
Para desarrollar una aplicación con Cassandra que sea capaz de manipular grandes cantidades de información de primero debes de abstraer los principales conceptos sobre arquitectura, replicación y seguridad, así mismo deberás entender cómo funcionan las conexiones entre la aplicación y la base de datos.
A continuación encontrarás algunas definiciones claras que te ayudarán en este proceso de aprendizaje.
Factor de replicación
El factor de replicación es la cantidad de veces que un registro va a estar repetido en el clúster Cassandra.
Ejemplo
Suponga que tiene un clúster de 10 nodos, a cada nodo se le asigno uno de los siguientes identificadores: {1, 2, 3, …, 10}, cuando realizamos una inserción:
INSERT INTO tweet (usuario, year, month, timestamp, tweet) VALUES (502, 2018, 1, ‘2018-01-31 19:58:00’, ‘Hola mundo!’);
El nodo Cassandra que recibe la instrucción de guardar aplicará la siguiente función: hash(502, 2018, 1) = {1|2|3|…|10}. Si el factor de replicación es igual a 2, entonces el nodo seleccionado por la función hash realizará la misma operación para almacenar ese mismo registro en otro nodo (lógicamente Cassandra suma un nivel de profundidad para obtener otro nodo distinto al actual).
Multiples datacenter
Un clúster Cassandra debe de funcionar en una red local para evitar que la información compartida entre los nodos llegue a Internet, si esto sucede, será necesario utilizar conexiones cifradas.
Un datacenter es un lugar en donde están situados físicamente los servidores, por ende, utilizar multiples datacenter nos provee de copias de seguridad totalmente independientes entre sí.
Idealmente, los datacenters están “separados geográficamente”. El diseño de redes y la virtualización de los servicios dependen de cada empresa.
Ejemplo
El siguiente ejemplo es el mismo que el anterior, cada cluster Cassandra tiene un factor de replicación igual a dos, la diferencia es que se utilizan dos datacenters (clústers Cassandra) para almacenar la información:
Controlador de conexión PHP/Cassandra
Datastax es una empresa que provee una versión corporativa de Apache Cassandra, al mismo tiempo contribuyen con el proyecto de código abierto. El controlador de esta publicación fue desarrollado y publicado por Datastax.
Al realizar la conexión con Cassandra se pueden especificar una o más direcciones IP de los nodos:
El controlador se encargará de obtener las direcciones IP de todos los nodos del clúster.
Esta función inteligente permite la alta disponibilidad: si el nodo con quien se realizó la conexión falla, el controlador se encargará de establecer comunicación con el siguiente nodo disponible (por ende con las demás copias del nodo no disponible).
Cifrado de datos
Los dos tipos de cifrado de datos en Cassandra son los siguientes:
- Nodo a nodo
- Nodo a cliente
En el siguiente ejemplo observamos los dos clientes: los dispositivos que se mantienen escribiendo en la base de datos y el servidor de aplicaciones que consulta y analiza la información (ejemplo de conexión nodo a cliente).
También observamos el anillo de nodos Cassandra, quienes se comunican para realizar las operaciones necesarias para mantener al clúster activo (ejemplo de conexión nodo a nodo).
En este escenario, el usuario final que se conecta al servidor de aplicaciones es totalmente externo a Cassandra, en este caso se deberá utilizar una conexión https para mantener sus datos de sesión seguros.
Referencias
Las imágenes de esta publicación fueron creadas con Draw.io
[https://www.draw.io/]