Este proyecto tiene como objetivo implementar un sistema de almacenamiento distribuido de tipo clave-valor, que utilice el método de replicación líder-seguidor.
El proyecto consta de:
Esta es la clase principal de la cual se genera el ejecutable .jar La clase genera un nodo a partir de la clase Node.class. Para poder generar el nodo se deben ingresar dos argumentos, el ip del nodo y el puerto de conexión
Esta es la clase que contiene el objeto Node La clase está implementada como un thread para que múltiples instancias de el se puedan ejecutar a la vez.
El objeto esta compuesto por:
Contiene getters y setters para rescatar los atributos
El objeto Node tiene la capacidad de:
Esta es la clase que contiene el objeto Timer, el cual controla el countdown y timeout de los nodos seguidores La clase está implementada como un thread para que se pueda ejecutar a la vez que el nodo está funcionando.
El objeto esta compuesto por:
Contiene getters y setters para rescatar los atributos
Esta es la clase que contiene el objeto Message, el cual es modificado según el CRUD.
El objeto esta compuesto por:
Contiene getters y setters para rescatar los atributos
Esta es la clase que contiene el objeto Database, el cual es responsable de mantener el HashMap.
El objeto está compuesto por:
Contiene un get getMessages() que le permite a la clase MessageService.class obtener los mensajes
Esta es la clase que contiene el objeto MessageService, el cual contiene la funcionalidad para los recursos.
El objeto está compuesto por:
Contiene funciones para realizar el CRUD en MessageResource.class
Esta es la clase que contiene el objeto MessageResource
Tiene la capacidad de:
Esta es la clase que contiene el objeto Writer
El objeto está compuesto por:
Contiene getters y setters para rescatar los atributos
Tiene la capacidad de:
Estas instrucciones te permitirán obtener una copia del proyecto en funcionamiento en tu máquina local para propósitos de desarrollo y pruebas.
$ sudo apt install git
$ git clone https://github.com/Pvidal-1/uees-sd-2022-proyecto_final.git
Que cosas necesitas para instalar el software y como instalarlas
Instalar JDK, Maven y curl
$ sudo apt update
$ sudo apt install default-jdk
$ sudo apt install maven
$ sudo apt install curl
Instalar Tomcat
$ sudo apt update
$ sudo groupadd tomcat
$ sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
$ cd /tmp
$ curl -O https://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.17/bin/apache-tomcat-9.0.17.tar.gz
Actualizar permisos de Tomcat
$ sudo mkdir /opt/tomcat
$ cd /opt/tomcat
$ sudo tar xzvf /tmp/apache-tomcat-9.0.*tar.gz -C /opt/tomcat --strip-components=1
$ sudo chgrp -R tomcat /opt/tomcat
$ sudo chmod -R g+r conf
$ sudo chmod g+x conf
$ sudo chown -R tomcat webapps/ work/ temp/ logs/
Pasos adicionales Tomcat
$ sudo nano /etc/systemd/system/tomcat.service
$ sudo systemctl daemon-reload
$ sudo ufw allow 8080
Refrescar cambios
$ sudo systemctl daemon-reload
Ejecutar el servicio
$ cd /opt/tomcat/bin
$ sudo ./startup.sh run
Desde el directorio del proyecto, para compilar los .java y crear el ejecutable .jar
$ mvn clean install
Para Inicializar un nodo (debe de ser en el directorio del proyecto)
$ java -jar target/ProyectoFinal.jar (ip) (puerto)
Se puede utilizar la extensión Postman para visualizar los cambios de los CRUD La ruta del proyecto es:
http://localhost:8080/replicacion/webapi/messages/