From: CaStarCo <cas...@gm...> - 2009-12-01 23:56:34
|
He mejorado el sistema de login y he añadido información referente a la base de datos (aunque aun no la uso al 100%), también he añadido documentación referente al almacenamiento de libros digitales, estaría bien discutir la forma, pues si queremos que escale debemos poder distribuír la carga de almacenamiento y accesos. He propuesto un sistema en el que el almacen está subdividido en arbol de directorios con un grado de ramificación 16 , todas los directorios y subdirectorios nombrados con las letras 0, 1, 2, ..., 9, a, b, .., f. Cada fichero iría a una carpeta u otra dependiendo de su valor md5 (que quedaría guardado dentro de la DB), dado que la distribución de las imagenes para la función md5 es homogenea, se puede esperar que los libros estén repartidos de forma más o menos homogénea. Separar los libros en diferentes directorios, por un lado aporta cierto orden, (aunque no sea inteligible para un ser humano que lo examine a ojo de buen cubero), y por otro abre las puertas a montar diferentes sistemas de archivos existentes en máquinas remotas, lo que serviría para distribuír la carga tal y como indicaba en un principio. Lo que no sé es como lo haríamos para (en un futuro lejano) hacer que el frontend (nginx, cherokee, o apache) no se transforme en un cuello de botella. Ahora mismo el sistema está ideado para correr entre unas 2 y 8 instancias de tabularium (una por procesador o núcleo) que actuan como backend de nginx, que se encarga de distribuír la carga y de servir los ficheros estáticos (para lo que está mucho mejor diseñado que tornado, que tiene un mejor desempeño para las aplicaciones dinámicas como tabularium). El problema que veo a la larga (y supongo que me parece un problema por falta de conocimientos.. seguro que hay alguna solución, si no los de google, wikipedia u otros servicios de uso masivo no podrían con nada) es... vale, toda la carga de tratamiento de la información está bien repartida... pero ¿y qué pasa con la carga que tiene que soportar el intermediario (nginx)? ¿como se distribuye la carga ligada a la transferencia de datos? Aquí estoy yendo muy lejos ya, pero creo que es interesante plantearse la cuestión. Por cierto, cosas que faltan y son sencillas, si queréis hacer algun apaño: · Mejorar la seguridad en los formularios para hacerlos resistentes a SQL injection (ya son resistentes, en teoría, a ataques xsrf) · crear scripts que permitan una puesta a punto rápida del sistema para reducir el tiempo de preparación y permitir que más gente pueda colaborar Saludos! -- - Per la llibertat del coneixement - - Per la llibertat de la ment... - |