[en] Current distributed systems that are capable of sharing resources in a distributed manner are experiencing an increase in their use and scope.This increased use in various application areas is largely due to the low cost of deployment and maintenance of a distributed environment, when compared to architectures like supercomputers. Then, many research efforts today are focused on providing solutions for distributed systems. It is essential that the solutions proposed allow for the sharing of a very large number of resources. This is a complex challenge to tackle since we do not want the solution to degrade as the number of system resources increase. It is also imperative that the solutions proposed, adapt to failures that occur both in the network and in the hardware and / or software that form the distributed system. This does not imply that the components should be universally available, but that the solution should be able to adapt to obtain the highest possible performance from all the components available at a given time. This is a more complex challenge. This thesis proposes a Resource Discovery Service (of services or resources) for large-scale distributed systems that are able to adapt to failures that occur in the system. By large scale systems, we mean systems that may be made up of hundreds, thousands or millions of machines. Failures refer to components that are not accessible through the network, components that are not working, or are overloaded, etc. It should be mentioned that in this work we found that in a real environment of geographically distributed resources, it is essential for service discovery to be fault tolerant. In one of the evaluations of our proposed discovery service, we chose 150 machines distributed geographically throughout Europe at random, without knowing if they were in a state of failure or not. We found that 24'67% of them were unavailable because they were in a failed state or because they failed during the evaluation of our service discovery. In this thesis, the proposed discovery service is based on an overlay that has a hypercube topology that interconnects nodes / intermediaries (brokers). The term overlay is used to describe a virtual network constructed at the application layer, above the level of TCP / IP. It acts as an intermediary component that mediates between service consumers (or clients) and service providers (or servers).

[es] Actualmente los sistemas distribuidos, capaces de compartir de forma distribuida recursos están experimentando un incremento en su uso y en sus ámbitos de aplicación. Este aumento de uso y de ámbitos de aplicación es, en buena medida, debido al bajo coste que supone el despliegue y mantenimiento de un entorno distribuido, si se compara con arquitecturas como los supercomputadores. Así, múltiples esfuerzos de investigación se centran hoy en día en aportar soluciones para sistemas distribuidos.Por un lado, es esencial que las soluciones aportadas permitan compartir un número muy alto de recursos. Este es un reto complejo de abordar ya que plantea el problema de que la solución no se degrade a medida que el número de recursos del sistema aumente.Por otro lado, también es imprescindible que las soluciones aportadas se adapten a los fallos que se producen tanto en la red como en los componentes de hardware y/o software que forman el sistema distribuido. Esto no implica que los componentes deban estar universalmente disponibles, sino que la solución debe adaptarse para obtener el rendimiento más alto posible de los componentes disponibles en cada momento. Este es un reto aún más complejo.El trabajo de esta tesis propone un servicio de descubrimiento de servicios (o recursos) para sistemas distribuidos de gran escala, capaz de adaptarse a los fallos que se producen en el sistema. Por gran escala, se entiende sistemas formados por cientos, miles o millones de máquinas y por fallos, se entiende componentes que no son accesibles a través de la red, componentes que no están funcionando, que están sobrecargados, etc. Cabe comentar que en este trabajo se ha constatado que en un entorno real distribuido geográficamente es imprescindible que el servicio de descubrimiento se adapte a los fallos que se producen en el sistema. En una de las evaluaciones del servicio de descubrimiento propuesto, escogiendo 150 máquinas distribuidas geográficamente a lo largo de Europa, de forma aleatoria sin conocer si se encontraban en estado de fallo o no, un 24,67% de ellas fallaron, bien porque ya estaban en fallo o bien porque fallaron durante la evaluación del servicio de descubrimiento. El servicio de descubrimiento propuesto está basado en una red overlay con la topología de un hipercubo que interconecta nodos/intermediarios (brokers). El término overlay se usa como red virtual construida en la capa de aplicación, por encima del nivel de TCP/IP, y se entiende un intermediario como un componente que media entre consumidores de servicios (o clientes) y proveedores de servicios (o servidores).