Sistemas Distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Estilos arquitetônicos: Arquiteturas x Middleware *Créditos – baseados em: slides de Pearson – Sistemas Distribuídos : Princípios e paradigmas slides de Jorge Surian – Sistemas distribuídos: : Tipos de Sistemas Distribuídos, Tipos de Arquiteturas e Sistemas Pervasivos. Slides de Nelson Souto Rosa – REDIS: Grupo de Redes e Sistemas Distribuidos
Arquiteturas Formadas em termos de componentes, do modo como esses componentes estão conectados uns aos outros, dos dados trocados entre componentes e, por fim, da maneira como esses elementos são configurados em conjunto para formar um sistema. Componente é uma unidade modular com interfaces requeridas e fornecidas bem definidas que é substituível dentro de seu ambiente. Conector é um mecanismo mediador da comunicação ou da cooperação entre componentes.
Arquiteturas Em geral, são complexa peças de software cujos componentes estão, espalhados por várias máquinas. Os principais estilos arquitetônicos são: Em camada Baseadas em Objeto Centradas em Dados Baseadas em Eventos
Arquiteturas Em Camadas Componentes são organizados em camadas Componente da camada N tem permissão de chamar componentes na camada N-1 Comum em redes de computadores
Arquiteturas Baseadas em Objeto Objeto → Componente Objetos são conectados por meio de uma chamada de procedimento (remota). Amplamente utilizada para sistemas de software de grande porte.
Arquiteturas Comparativo
Repositório comum de dados Arquiteturas Centradas em Dados Processos se comunicam por meio de um repositório comum (espaço de dados compartilhados) Sistemas distribuídos baseados na Web, em grande parte, são centrados em dados. Repositório comum de dados Componente
Arquiteturas Baseadas em Eventos Sistemas publicar/subscrever Processos publicam eventos e o middleware assegura que somente os processos que se subscreveram para esses eventos os receberão Processos fracamente acoplados: processos não se referem explicitamente uns aos outros
Arquiteturas Também podem ser híbridas Combina arquiteturas baseadas em eventos juntamente com centradas em dados, também conhecidas como espaços compartilhados de dados.
Arquitetura de Sistema Decisões a respeito de componentes de software, sua interação e sua colocação em máquinas reais. Três tipos: Centralizadas Descentralizadas Hibridas
Arquitetura de Sistema - Centralizadas Modelo cliente-servidor Comportamento de requisição-resposta
Arquitetura de Sistema - Centralizadas Tipico exemplo de uma arquitetura centralizada
Arquitetura de Sistema - Centralizadas Como estabelecer a comunicação? Protocolo sem conexão: Protocolo simples, que funciona bem em redes locais Cliente empacota uma mensagem para o servidor diretamente Eficiente se NÃO ocorrem problemas Exemplo: Falhas → Transferências bancarias Operações podem ser repetidas sem causar danos: idempotentes
Arquitetura de Sistema - Centralizadas Como estabelecer a comunicação? 2. Protocolo orientado a conexão Solução funciona bem em sistemas de longa distância. Sempre que um cliente requisita um serviço, primeiro se estabelece conexão com o servidor e depois se envia a requisição.
Arquitetura de Sistema - Centralizadas Camadas de Aplicação Como distinguir entre cliente e servidor? Exemplo: Servidor de banco de dados distribuído → repassa requisições a servidores de arquivos. Assim, age como cliente continuamente. Como muitas aplicações cliente-servidor visam dar suporte ao acesso de usuários a banco de dados é conveniente que sejam divididas em três níveis distintos: Nível de interface de usuário Nível de processamento Nível de dados
Arquitetura de Sistema - Centralizadas Nível de interface de usuário. Consiste em programas que permitam aos usuários finais interagir com aplicações. Diversos níveis de complexidade. Nível de processamento Normalmente contem as aplicações Exemplo: Análise de dados financeiros que pode exigir métodos e técnicas sofisticados de estatística Nível de dados Na sua forma mais simples, consiste em um sistema de arquivos. Mais comum utilizar um banco de dados. Normalmente implementado no lado servidor. Mantém os dados consistentes. Dados costumam ser persistentes.
Arquitetura de Sistema - Centralizadas
Arquitetura de Sistema - Multidivididas Com base na organização de três níveis lógicos discutida anteriormente, é necessária a distribuição física. A maneira mais simples, denominada arquitetura de duas divisões (físicas) é distribuída da seguinte forma: Uma máquina cliente que contém apenas os programas que implementam o nível (ou parte do nível) de interface de usuário Uma máquina do servidor que contém todo o resto, ou seja, os níveis de processamento e de dados.
Arquitetura de Sistema - Multidivididas Três Níveis lógicos → várias possibilidades para a distribuição física de uma aplicação cliente-servidor por várias máquinas Interface modo texto Interface gráfica Preenchimento de formulário
Arquitetura de Sistema - Multidivididas Gerenciamento de sistema: Clientes gordos (fat clients) Clientes magros (thin clients) Servidor pode também agir como clientes: arquitetura de três divisões
Arquitetura de Sistema - Descentralizadas Distribuição vertical divide componentes logicamente diferentes em máquinas diferentes; Distribuição horizontal Um cliente ou servidor pode ser subdividido em partes logicamente equivalentes, mas cada parte está operando em sua própria porção do conjunto de dados, equilibrando a carga. Ex.: Peer to Peer (servidor e cliente ao mesmo tempo, também chamada “servente”)
Arquitetura de Sistema – Descentralizadas Peer-to-peer Arquiteturas se dividem pela forma de organizar os processos em uma rede de sobreposição. Redes de sobreposição estruturadas Redes de sobreposição não-estruturadas
Arquitetura de Sistema – Descentralizadas Arquiteturas Peer to Peer estruturadas O mais usado é organizar os processos por meio de uma DHT (Distributed Hash Table). Armazenamento de tabelas hashes (chave, valor) de forma distribuída. Qualquer nodo pode buscar o valor associado a uma chave Reponsabilidade de manter o mapeamento é distribuida entre os nodos. Alterações afetam poucos nodos Cada nodo mantém um conjunto de links para seus vizinhos (route table) de acordo com a topologia da rede Juntos formam uma overlay network Extremamente escalável
Distributed Hash Table
DHT – Protocolos e implementações Sistema Chord – Nós ligados logicamente em anel, onde um item de dado com chave k seja mapeado para o nó que tenha o menor Id ≥ k. CAN (Content Addressable Network)– Usa espaço de coordenadas cartesianas de d dimensões particionado entre todos os nós participantes do sistema. Além desses dois, outros exemplos: Apache Cassandra BitTorrent DHT – baseado no Kademlia Kademlia Pastry P-Grid Tapestry
Arquitetura de Sistema – Descentralizadas Sistema Chord Formada por um anel lógico onde cada nodo mantém uma relação de nodos atingíveis (finger table) Mapeia uma chave (ou conjunto de chaves) para um nodo. Nodos armazenam os valores para todas as chaves que eles são responsáveis Chord especifica como as chaves são definidas para os nodos e como os nodos podem descobrir quem é o nodo responsável por determinada chave
Arquiteturas descentralizadas Rede de Conteúdo Endereçável (CAN) O design da arquitetura é um espaço de coordenadas cartesianas multi-dimensional formando uma overlay-network Esse espaço de coordenadas d-dimension possui um endereçamento lógico virtual independente da posição fisica dos nodos ou de sua conectividade. Pontos no espaço são identificados como coordenadas O espaço de coordenadas é dinamicamente particionado entre todos os nodos do sistema de forma que cada nodo possui ao menos uma zona distinta no espaço
Arquiteturas descentralizadas Rede de Conteúdo Endereçável (CAN)
Arquitetura de Sistema – Descentralizadas Arquiteturas P2P não-estruturadas Cada nó mantém uma lista aleatória de vizinhos. Itens de dados são colocados aleatoriamente nos nós. Consulta através de inundação da rede (flooding) A meta é construir uma rede de sobreposição parecida com um grafo aleatório.
Gerenciamento de topologia de redes de sobreposição Abordagem de 2 camadas
Evolução da rede de sobreposição não-estruturada A tendência do uso contínuo das duas camadas tende a distribuir melhor os peers.
Super-pares (superpeers) Usam nós especiais que mantêm um índice de itens de dados, a fim de facilitar a localização de dados relevantes em sistemas P2P não estruturados. Definem, em muitos casos, uma relação cliente- superpar fixa, onde sempre que um par se junta à rede, se liga a um dos superpares e continua ligado até sair da rede Nem sempre é uma boa solução!
Super-pares (superpeers)
Arquitetura de Sistema – Arquiteturas híbridas Sistemas de servidor de borda (Internet) Sistemas colaborativos (Torrent)
Arquitetura de Sistema – Arquiteturas híbridas BitTorrent Um usuário acessa um diretório global que contém um arquivo .torrent, o qual contém as informações necessárias para transferir um ou mais arquivos específicos (rastreador). Após a identificação dos nós e suas porções de arquivos, o nó que está transferindo se torna efetivamente ativo, sendo forçado a auxiliar os outros. O gargalo dos servidores são os rastreadores!
Funcionamento do BitTorrent
Arquiteturas versus Middleware
Middleware
Middleware Onde o Middleware se encaixa? Entre aplicações e plataformas distribuídas, com finalidade de proporcionar um grau de transparência à distribuição de dados, processamento e controle. É uma camada de software posicionada entre as outras camadas de software
Contexto do Middleware
Contexto do Middleware
Contexto do Middleware
Serviços fornecidos pelo Middleware
Modelos de Middleware
Middleware orientado a transação
RPC – Remote Procedure Call
MOM – Message Queueing
MOM – Publish / Subscribe
Middleware baseado em objetos
CORBA
Middleware para Sistemas Móveis
Middleware para Web
Web Services e outros Middlewares
Programação de Aplicações em Middleware