Què és DCACHE ?
May 12, 2007 – 1:07 amBe ja fa dies que estic immers en el projecte de PXC - Projecte de Xarxes i Conputardor- anomenat DCACHE. Al igual que altres assignatures de projectes de la FIB aquesta també intenta incentivar a diferents estudiants a realitzar algun projecte que involucri tecnologies al voltant de xarxes i sistemes operatius. En el nostre cas el grup format per en Ramon, en Bernat, el Josep i jo mateix varem el.legir un projecte dirigit a realitzar una CDN - Content Distribution Network- amb algunes pinzellades pròpies diferents a altres CDN com akamai.
Avui he sortit de la facultat que eren quasi les 12 de la nit, després de 6 hores tancaven amb certs bugs encara la primera posta en comú de codi i els resultats eren força esperançadors, jo diria que podem estar només al 20% de poder tenir el primer prototip preparat per a fer demostracions, després ens quedarà la documentació i entrega d'aquesta - idèntica a un PFC.
Ens hauran quedat moltes coses per fer, molts bugs i control d'errors per arreglar i fins i tot algunes de les idees més importants i transgressores per portar a terme, però ara després d'haver superat el que jo diria la prova de foc, en puc quedar força satisfet.
Els aspectes principals del projecte els podríem resumir en els següents punts :
- Sistema de cache client implementat mitjançant un modul de l'apache
- Ús d'un sistema central lògic per a repartiment efectiu de caches dels clients
- Ús d'un cluster descentralitzat de nodes amb servidors lighthttpd preparats per a servir i agafar cache
El recorregut bàsic que pateix un arxiu des del servidor web fins a la cache és el següent
- El client demana mitjançant una petició http un objecte del servidor
- Un modul de l'apache confirma si aquest arxiu esta en cache o no, en cas contrari
- Envia una petició d'autorització per cachejar aquest arxiu
- El sistema central accepta o denega la petició depenent de les característiques de l'arxiu i
de l'estat de la cache del client, en cas afirmatiu
- El modul de l'apache envia al sistema central l'arxiu en qüestió
- El sistema central recepeciona l'arxiu i reenvia l'axiu al pool de nodes del client
- L'enviament es fa mitjançant un sistema de re enviament encadenats entre nodes
- Cada node que rep la petició desencadena una altre crida al següent node i realitza els ACKs corresponents
- A cada ACK el sistema central valida l'operació i afegeix aquell node al pool com a node valid per aquell arxiu determinat
......
- Un cop el apache torna a rebre una petició de l'arxiu en concret ja sap que aquest esta en cache i pregunta al sistema central per l'adreça cache de l'objecte
- El sistema central respon mitjançant amb un pool de nodes que tenen una copia de l'objecte
- El modul de l'apache retorna un http redirect al browser a la ip del node elegit de forma efectiva del pool
subministrat pel sistema central
- El browser fa una crida http demanant finalment l'objecte en qüestió
La meva part en el projecte ha sigut desenvolupar el sistema central, ni mes complexa ni menys que els altres senzillament amb les seves cosetes i detalls.
De la meva part hem queda el treball del sistema d'scheduling, potser el mes complex i el que probablement no podré a acabar a temps, les característiques bàsiques d'ell son
- Calcul del Load Average dels nodes del últim 1, 5 i 15 mintus.
- Assignació de pesos als nodes que formen el pool de forma dinàmica segons les cargues de cada un d'ells
- Afegir i Eliminar nodes dels pools en cas de sobre saturació o de mal aprofitament
- Intersecció de nodes entre pools, un node pot ser membre de diferents pools.
El codi de tots els mòduls ha sigut fet amb C i amb el recolzament de MySql o SqlLite en el cas del modul de l'apache.
En el moment que tinguem la documentació acabada i feta una primera demo del prototip en posaré els resultats aquí al blog