Estoy escribiendo una aplicación distribuida que involucra varios nodos frontales que necesitan denegar acciones al usuario a menos que sean parte de una lista.¿Tiene sentido usar Zookeeper para almacenar permisos de usuario?
Ahora tenemos más de 4 de esos nodos pero solo un servidor de base de datos que ejecuta DB2 que a menudo está fuera de servicio por mantenimiento.
En este momento estamos consultando la base de datos para actualizar una lista en la memoria, de modo que si un usuario es eliminado de la lista, el cambio se refleje en los 4 nodos. Pero si uno de los nodos se reinicia mientras la base de datos está inactiva, terminaríamos con una lista vacía que denegará todas las solicitudes de los usuarios que no queremos. Podemos aceptar la solicitud del usuario incluso si la base de datos está inactiva ya que los almacenamos en una cola de mensajes, pero queremos rechazarlos inmediatamente si necesitan ser rechazados.
Tiene sentido ejecutar una instancia de Zookeeper en cada uno de nuestros 4 nodos y almacenar el permiso de usuario en Zookeeper. Por lo tanto, la lectura debe ser rápida y los datos altamente disponibles y consistentes. No tendríamos que volver a hacer sondeos e incluso si reiniciamos la base de datos, ¡el nodo podrá obtener su configuración de zookeeper!