| Nome: | Descrição: | Tamanho: | Formato: | |
|---|---|---|---|---|
| 1.94 MB | Adobe PDF |
Autores
Orientador(es)
Resumo(s)
Nowadays, many systems rely on decentralized architectures as a way to provide services
to many users that require high availability, fault tolerance, and scalability. Avoiding a
centralized component, which is often the source of bottlenecks and a single point of
failure, makes these systems more autonomous and robust. Additionally, not relying on
proprietary infrastructures also brings privacy-related benefits. Systems that require some
form of coordination between different components in order to perform a particular task,
for instance in the context of edge computing, usually benefit from relying on decentralized
architectures. Examples of these systems include swarms of satellites, IoT appliances,
industrial machines, clusters of computers processing large amounts of data, among
others.
Decentralized architectures need to provide two fundamental functionalities: the management
of peers participating in the system, commonly called membership management,
and mechanisms to support communication between peers in order to send and receive
information. Many solutions providing these functionalities were already developed in
the context of peer-to-peer systems, specially when considering the development of protocols
based on overlay networks. While, on one hand, the existence of several decentralized
protocols, some of which providing similar services, allows for applications to choose the
most suitable one for their operation. On the other hand, should the need for a change of
protocol providing a given service arise, applications may have to be extensively rewritten
due to the differences between interfaces. This also makes it difficult to reuse solutions
based on the same decentralized services across different applications.
This work studies existing decentralized protocols with a focus on their operation,
exposed interfaces, and provided services. Then, leveraging on the lessons learned from
the performed study, we propose generic abstractions for interacting with decentralized
protocols based on the implemented services. Moreover, our architecture provides mechanisms
to simplify the management of protocols that can be leveraged by applications
based on decentralized protocols to take advantage of an edge computing approach. In
this document, we also present the implementation, based on our architecture, of a set of
applications and existing protocols.
Hoje em dia, vários sistemas baseiam-se na utilização de arquiteturas descentralizadas para fornecer serviços com garantias de alta fiabilidade, disponibilidade e escalabilidade. Evitar a utilização de um componente centralizado permite evitar pontos de estrangulamento bem como a existência de um único ponto de falha, tornando estes sistemas mais autónomos e robustos. Adicionalmente, não depender de infraestruturas proprietárias traz também benefícios relacionados com a privacidade. Uma das aplicações mais comuns para este tipo de arquiteturas são sistemas que necessitam de alguma forma de coordenação entre os diferentes atores que os compõem para realizar uma determinada tarefa, por exemplo, no contexto da computação na edge. Estas tarefas podem tratar-se de coordenação entre grupos de satélites, dispositivos IoT, máquinas industriais ou computadores responsáveis pelo processamento abundante de dados, entre outros. De uma forma geral, sistemas baseados em arquiteturas descentralizadas necessitam de fornecer duas funcionalidades fundamentais: mecanismos de gestão dos nós que participam no sistema, conhecidos como gestão de filiação (membership management), e mecanismos de comunicação entre esses mesmos nós. Diversas soluções já existem, em particular no domínio dos sistemas entre-pares (peer-to-peer), onde protocolos baseados em redes sobrepostas (overlay networks) são habitualmente utilizados. Assim, apesar da existência de múltiplos protocolos, capazes de fornecer serviços similares, permitir às aplicações escolher o mais adequado à sua operação, a substituição de um protocolo por outro pode levar a que uma aplicação tenha de ser significativamente modificada. A reutilização de código entre aplicações baseadas na utilização dos mesmos serviços também se torna difícil devido às diferentes interfaces expostas pelos protocolos. Neste trabalho diversos protocolos descentralizados foram estudados, considerando a sua operação, interfaces expostas e serviços disponibilizados, de forma a propor um conjunto de abstrações genéricas para interagir com os mesmos baseadas nos serviços fornecidos. A arquitetura apresentada permite também uma gestão simplificada dos diversos protocolos utilizados por aplicações, baseadas em computação na edge, para obter os serviços necessários. Neste documento, apresentamos ainda a implementação, baseada na nossa solução, de um conjunto de aplicações e protocolos já existentes.
Hoje em dia, vários sistemas baseiam-se na utilização de arquiteturas descentralizadas para fornecer serviços com garantias de alta fiabilidade, disponibilidade e escalabilidade. Evitar a utilização de um componente centralizado permite evitar pontos de estrangulamento bem como a existência de um único ponto de falha, tornando estes sistemas mais autónomos e robustos. Adicionalmente, não depender de infraestruturas proprietárias traz também benefícios relacionados com a privacidade. Uma das aplicações mais comuns para este tipo de arquiteturas são sistemas que necessitam de alguma forma de coordenação entre os diferentes atores que os compõem para realizar uma determinada tarefa, por exemplo, no contexto da computação na edge. Estas tarefas podem tratar-se de coordenação entre grupos de satélites, dispositivos IoT, máquinas industriais ou computadores responsáveis pelo processamento abundante de dados, entre outros. De uma forma geral, sistemas baseados em arquiteturas descentralizadas necessitam de fornecer duas funcionalidades fundamentais: mecanismos de gestão dos nós que participam no sistema, conhecidos como gestão de filiação (membership management), e mecanismos de comunicação entre esses mesmos nós. Diversas soluções já existem, em particular no domínio dos sistemas entre-pares (peer-to-peer), onde protocolos baseados em redes sobrepostas (overlay networks) são habitualmente utilizados. Assim, apesar da existência de múltiplos protocolos, capazes de fornecer serviços similares, permitir às aplicações escolher o mais adequado à sua operação, a substituição de um protocolo por outro pode levar a que uma aplicação tenha de ser significativamente modificada. A reutilização de código entre aplicações baseadas na utilização dos mesmos serviços também se torna difícil devido às diferentes interfaces expostas pelos protocolos. Neste trabalho diversos protocolos descentralizados foram estudados, considerando a sua operação, interfaces expostas e serviços disponibilizados, de forma a propor um conjunto de abstrações genéricas para interagir com os mesmos baseadas nos serviços fornecidos. A arquitetura apresentada permite também uma gestão simplificada dos diversos protocolos utilizados por aplicações, baseadas em computação na edge, para obter os serviços necessários. Neste documento, apresentamos ainda a implementação, baseada na nossa solução, de um conjunto de aplicações e protocolos já existentes.
Descrição
Palavras-chave
Distributed systems Decentralized systems Decentralized applications Overlay networks Edge computing Peer-To-Peer systems
