Edge computing aims at addressing some limitations of cloud computing by bringing
computation towards the edge of the system, i.e., closer to the client. There is a panoply
of devices that can be integrated into future edge computing platforms, from local datacenters
and ISP points of presence, to 5G towers, and even, multiple user devices like
smartphones, laptops, and IoT devices. For all of these devices to communicate fruitfully,
we need to build systems that enable the seamless interaction and cooperation among
these diverse devices. However, creating and maintaining these systems is not trivial
since there are numerous types of devices with different capacities. This resource heterogeneity
has to be taken into account so that different types of machines contribute to the
management of the distributed infrastructure differently, and the operation of the overall
system becomes more efficient.
In this work, we addressed the challenges identified above by exploring unstructured
overlay networks, that have been shown to be possible to manage efficiently and in a
fully decentralized way, while being highly robust to failures. To that end, we devised
a solution that adapts the number of neighbors of each device (i.e., how many other devices
that device knows) according to the capacity of that device and the distribution
of capacities of the other devices in the network, as to ensure that the load is fairly distributed
between them and, as a consequence, improve the operation of other services
atop the unstructured overlay network, for instance, reducing the latencies experienced
when broadcasting information. This solution can be easily integrated into most existing
peer-to-peer distributed systems, requiring just a slight adaptation to their membership
protocol. To show the correction and benefits of our proposal, we evaluated it by comparing
it with state of the art decentralized solutions to manage unstructured overlay
networks, combining both simulation (to observe the performance of the solution at large
scale) and prototype deployments in realistic distributed infrastructures.A computação de periferia visa abordar algumas limitações da computação em nuvem,
trazendo a computação para mais perto do cliente. Há uma enorme variedade de dispositivos
que podem ser integrados em futuras plataformas de computação de periferia, de
data centers locais e pontos de presença de ISPs a torres 5G e até mesmo dispositivos de
cliente, como smartphones, laptops e dispositivos IoT. Para que todos esses dispositivos comuniquem
de forma proveitosa entre si, precisamos construir sistemas que possibilitem
a interação e cooperação eficaz entre eles. No entanto, criar e manter esses sistemas não é
trivial, uma vez que existem vários tipos de dispositivos com diferentes capacidades. Essa
heterogeneidade de recursos deve ser levada em consideração para que diferentes tipos
de máquinas contribuam para o gerenciamento da infraestrutura distribuída de forma
distinta e a operação do sistema se torne mais eficiente.
Neste trabalho, enfrentámos os desafios identificados acima explorando redes sobrepostas
não estruturadas, que se têm mostrado possíveis de gerenciar de forma eficiente
e totalmente descentralizada, sendo altamente resistentes a falhas. Para tal, concebemos
uma solução que adapta o número de vizinhos de cada dispositivo (ou seja, quantos outros
dispositivos aquele dispositivo conhece) de acordo com a sua capacidade e a capacidade
dos demais dispositivos da rede, de forma a garantir que a carga seja proporcionalmente
distribuída entre eles e, como consequência, reduzindo as latências experienciadas por
esses dispositivos. Esta solução pode ser facilmente integrada num sistema distribuído
entre-pares existente, exigindo apenas uma ligeira adaptação ao seu protocolo de filiação.
Avaliámos a nossa solução comparando-a com outras soluções descentralizadas de última
geração, combinando simulação (para observar o desempenho da soluç