Sistemas Distribuídos e Protocolos de Rede: Conceitos Essenciais

Classificado em Computação

Escrito em em português com um tamanho de 15,14 KB

Conceitos Fundamentais de RPC e RMI

O que são Stubs e RPC?

Os Stubs são procedimentos que contêm o código de chamadas à rede. Com o Stub, o RPC (Remote Procedure Call) protege os programas de aplicação (cliente e servidor) de preocupações com detalhes de sockets. O RPC inclui uma especificação com o formato padrão dos dados, e nos Stubs ocorre a conversão desses dados.

Daemon de Porta Dinâmica para Serviços RPC

O Daemon de Porta Dinâmica para serviços RPC é um protocolo que permite a um host utilizar uma função localizada em outro host remoto. Ele possibilita a troca de mensagens, na qual a origem (cliente) envia parâmetros a um servidor e aguarda um retorno, que fornecerá o resultado da função remota.

Mecanismo de RPC e Protocolo RR

O mecanismo de RPC integra o protocolo RR (Remote Request) usado para a comunicação cliente/servidor com as linguagens de programação convencionais, permitindo que clientes se comuniquem com servidores através de chamadas de procedimentos.

Tipos de Chamadas Remotas (RPC)

Os dois tipos de chamadas remotas são:

  • Chamadas Convencionais (UDP): Conhecidas como RPCs de uma via, onde a confiabilidade não é garantida, e o cliente pode não saber, com certeza, se a requisição será ou não processada.
  • RPC Assíncrona (TCP): O servidor envia imediatamente uma resposta de volta ao cliente no momento em que a requisição RPC é recebida e, depois disso, chama o procedimento requisitado.

Funcionamento RPC vs. RMI

  • RPC: Admite a programação por procedimentos, na qual somente procedimentos ou funções remotas podem ser chamadas. Os parâmetros dos procedimentos remotos são estruturas de dados comuns.
  • RMI (Remote Method Invocation): É baseada em objeto; ela admite a invocação de métodos em objetos remotos. Com a RMI, é possível passar objetos como parâmetro aos métodos remotos. Permitindo que um programa Java invoque métodos em objetos remotos, a RMI possibilita o desenvolvimento de aplicações Java distribuídas por uma rede.
  • Stubs (RMI): O stub funciona de forma semelhante a um proxy para o objeto remoto. Quando um objeto local invoca um método em um objeto remoto, o stub é responsável por enviar a chamada ao método para o objeto remoto.

Middleware e Interfaces

O que é Middleware?

Middleware é uma aplicação que reside logicamente, na maioria das vezes, na camada de aplicação, mas que contém muitos protocolos de uso geral que justificam suas próprias camadas, independentemente de outras aplicações mais específicas. É utilizado para mover ou transportar informações e dados entre programas de diferentes protocolos de comunicação, plataformas e dependências do sistema operacional.

Interfaces e IDL em RPC

Uma interface consiste em um conjunto de procedimentos que podem ser chamados por um cliente e que são implementados por um servidor. Geralmente, uma interface está disponível na mesma linguagem de programação em que o cliente ou servidor é escrito. Para simplificar, interfaces costumam ser especificadas por meio de uma IDL (Linguagem de Definição de Interface). Na prática, utilizar linguagens de definição de interfaces simplifica consideravelmente aplicações cliente-servidor baseadas em RPC. Como é fácil gerar completamente apêndices de cliente e servidor, todos os sistemas de middleware baseados em RPC oferecem uma IDL para suportar o desenvolvimento de aplicações. Em alguns casos, usar IDL é até obrigatório.

Segurança e Conectividade

Qual a Função do SSH?

O SSH (Secure Shell) permite administrar máquinas remotamente, transferir arquivos de várias formas diferentes e encapsular outros protocolos, permitindo, por exemplo, acessar uma sessão do VNC através de um túnel seguro. Ele utiliza um conjunto de técnicas de criptografia para assegurar que apenas as pessoas autorizadas tenham acesso ao servidor, que todos os dados transmitidos sejam impossíveis de decifrar e que a integridade da conexão seja mantida.

Secure Shell (SSH)

O acesso SSH pode ser feito de duas formas principais:

  • Transferência de Arquivos: Funciona de forma muito parecida com o sistema de FTP, onde você seleciona o arquivo e o envia ao sistema remoto (máquina real ou virtual).
  • Linha de Comandos: Você executa comandos diretamente, como no antigo DOS do sistema Windows, mas os comandos aceitos são apenas Unix e Linux.

A porta normalmente usada para este protocolo é a porta 22.

Desafios em Sistemas Distribuídos

O que são Deadlocks? Processos Distribuídos são Passíveis de Deadlocks?

Um conjunto de processos está em Deadlock se cada processo no conjunto está esperando por um evento que apenas outro processo do conjunto pode gerar.

Nos sistemas distribuídos, podem ocorrer dois tipos de deadlocks:

  • Deadlock de Comunicação: Ocorre quando um processo A está esperando uma mensagem do processo B, que está esperando uma mensagem do processo C, que por sua vez está esperando uma mensagem do processo A.
  • Deadlock de Recursos: Ocorre quando os processos estão competindo pelo uso exclusivo de dispositivos de I/O, arquivos ou outros recursos.

Sistemas Distribuídos: Definições e Características

O que é um Sistema Distribuído?

Um sistema distribuído é definido como um conjunto de unidades de processamento independentes que, através da troca de comunicação e gerenciamento de sincronização, podem processar uma aplicação em diferentes localidades com características próprias distintas, dando a impressão ao usuário de que toda a aplicação é gerenciada por um sistema único.

Importância da Escalabilidade

A escalabilidade é uma característica desejável em todo sistema, rede ou processo, que indica sua capacidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer. Por exemplo, pode se referir à capacidade de um sistema em suportar um aumento de carga total quando recursos (normalmente de hardware) são requeridos.

Sistemas Distribuídos Pervasivos

Nos sistemas distribuídos pervasivos, o poder computacional deve estar sempre disponível, em qualquer lugar, a todo momento e acessível com qualquer dispositivo. Neste cenário de computação, o termo pervasiva propõe o deslocamento da computação para a centralização no usuário e suas atividades. Sendo assim, quem deve ser reconhecido pelo sistema é o usuário e não os equipamentos que ele porta ou usa (como estão definidos os sistemas computacionais atuais).

Redes de Sobreposição (Overlay Networks)

Uma rede de sobreposição é uma arquitetura de redes de computadores onde cada um dos pontos ou nós da rede funciona tanto como cliente quanto como servidor, permitindo o compartilhamento de serviços e dados sem a necessidade de um servidor central. Também é utilizada para descobrir e indexar os pares da rede; tais redes podem ser configuradas em casa, em empresas e na internet.

Grids vs. Clusters

Ao contrário dos Grids, que geralmente interligam grandes distâncias (países, universidades, empresas e organizações), os clusters são mais locais. Os membros de um cluster são chamados de nós e geralmente ficam em um datacenter (ambiente apropriado), prédio ou sala. A administração dos recursos, tanto de hardware quanto de processamento, também é de ordem local (geralmente de uma empresa), diferente do Grid, onde cada um contribui e administra 'um pouco'.

O Conceito de Transparência

A transparência é um conceito relativo, focado em tornar menos perceptíveis alguns detalhes do que ela trata.

Transparência (DNS Web)

Podemos citar dois tipos de transparência:

  • De Acesso: Oculta diferenças na representação de dados e no modo de acesso a um recurso.
  • De Localização: Oculta o lugar em que um recurso está localizado.

Arquiteturas e Protocolos de Rede

Web com Banco de Dados (Arquitetura Multi-Camadas)

Sim, pois cada camada desta arquitetura é normalmente mantida em um servidor específico para tornar-se mais escalável e independente das demais. Sendo assim, ela é multi-camadas e possui as características principais deste tipo de arquitetura.

Redes P2P Não Estruturadas

Uma grande vantagem de uma rede deste tipo é o fato de não existir um servidor central. A rede P2P (Peer-to-Peer) apresenta maior robustez e segurança por não poder sofrer um ataque centralizado. Em contrapartida, uma desvantagem seria a redundância; devido ao tamanho das redes, não é incomum realizar duas buscas e adquirir o mesmo resultado, embora seja possível que isso ocorra.

Estes sistemas são mais escaláveis que os de transmissão e inundação. Além de enviar a consulta para todos os pares, ele encaminha seletivamente a consulta para pares específicos que são considerados possíveis locais onde o recurso pode ser encontrado. Os pares se tornarão super pares automaticamente se tiverem largura de banda suficiente para processar suas potencialidades. Pares com conexão via linha discada (baixa banda) poderão fazer consultas a super pares. Este tipo de sistema utiliza um Algoritmo de Controle de Fluxo (FCA – Flow Control Algorithm) que tenta aplicar uma forma inteligente de controlar o fluxo de como um par encaminhará e responderá a uma mensagem, e um esquema sensível de prioridade para descartar mensagens que não caibam na conexão.

BitTorrent e Arquitetura P2P/Cliente-Servidor

O BitTorrent utiliza, por exemplo, a transferência de arquivos P2P e a arquitetura cliente/servidor para pesquisar quais peers contêm o arquivo desejado. A comunicação desta aplicação (comunicação instantânea) é tipicamente P2P. No entanto, para iniciar uma comunicação, um usuário registra-se em um servidor e verifica quem de sua lista de contatos também está registrado, para a partir de então começar uma comunicação. Essas aplicações também disponibilizam transferência de arquivos, suporte a grupos, emoticons, histórico de chat, suporte a Proxy, e outras ferramentas.

DNS e sua Arquitetura

O Domain Name System (DNS) é um sistema de gerenciamento de nomes hierárquico e distribuído para computadores, serviços ou qualquer recurso conectado à Internet ou a uma rede privada. Ele se baseia em nomes hierárquicos e permite a inscrição de vários dados, além do nome do host e seu IP.

Em virtude do banco de dados de DNS ser distribuído, seu tamanho é ilimitado e o desempenho não degrada tanto quando mais servidores são adicionados. Os servidores de diretórios responsáveis por prover informações como nomes e endereços das máquinas são normalmente chamados de servidores de nomes. Na Internet, o serviço de nomes usado é o DNS, que apresenta uma arquitetura cliente/servidor, podendo envolver vários servidores DNS na resposta a uma consulta.

DNS: Tempo de Vida (TTL) e Propagação

A questão das '48 horas' no DNS refere-se ao TTL (Time To Live) de cada registro DNS no arquivo de zona do seu nome de domínio. O TTL é o período de tempo durante o qual os servidores irão guardar em cache as informações dos seus registros de DNS.

Por exemplo, se você definir o TTL de um determinado registro como uma hora, os servidores irão guardar as informações desse registro localmente durante uma hora antes de obterem informações atualizadas a partir do seu servidor de nomes autorizado. Um TTL mais curto pode aumentar a velocidade de propagação. No entanto, essa definição aumenta também o número de consultas enviadas para o seu servidor de nomes autorizado, e essa carga acrescida pode tornar mais lento o tempo de processamento do servidor.

Arquiteturas Multidivididas

As arquiteturas multidivididas possuem várias possibilidades para a distribuição física de uma aplicação cliente/servidor por várias máquinas. Além disso, possuem 3 níveis lógicos:

  • Interface de Usuário (apresentação)
  • Servidor de Aplicação
  • Servidor de Banco de Dados

Sistema Computacional Adaptativo

Um sistema computacional adaptativo é um caso especial de 'sistema complexo'. Complexos no sentido de que são diversos, e adaptativos porque têm a capacidade de mudar e aprender com a experiência.

Protocolos e Sistemas Comuns

  • NFS (Network File System): É um sistema de arquivos distribuídos desenvolvido inicialmente pela Sun Microsystems, Inc., a fim de compartilhar arquivos e diretórios entre computadores conectados em rede, formando assim um diretório virtual.
  • NIS (Network Information Service): É um protocolo de serviço de diretório cliente-servidor para distribuição de dados de configuração de sistema, como nomes de usuário e de host, entre computadores em uma rede.
  • SSH (Secure Shell): É um protocolo de rede que permite a conexão com outro computador na rede de forma a permitir a execução de comandos de uma unidade remota. O SSH faz parte da suíte de protocolos TCP/IP que torna segura a administração remota de servidores do tipo Unix. O SSH possui as mesmas funcionalidades do TELNET, com a vantagem da criptografia na conexão entre o cliente e o servidor.
  • MPI (Message Passing Interface): É um padrão para comunicação de dados em computação paralela. Existem várias modalidades de computação paralela, e dependendo do problema que se está tentando resolver, pode ser necessário passar informações entre os vários processadores ou nós de um cluster, e o MPI oferece uma infraestrutura para essa tarefa.

Vantagens do NIS em Clusters

Uma das inúmeras vantagens do NIS é o fato de que os servidores concentram as informações do repositório para os hosts. Os master servers possuem uma cópia do repositório, enquanto os slave servers armazenam um espelhamento das informações de forma a garantir redundância e disponibilidade em caso de falha dos master servers. Já os clientes acessam e fazem uso das informações disponibilizadas pelos servidores.

Entradas relacionadas: