Escolar Documentos
Profissional Documentos
Cultura Documentos
redes e sistemas
distribuídos
Projetos de redes e
sistemas distribuídos
Presidente
Rodrigo Galindo
Conselho Acadêmico
Ana Lucia Jankovic Barduchi
Camila Cardoso Rotella
Danielly Nunes Andrade Noé
Grasiele Aparecida Lourenço
Isabel Cristina Chagas Barbin
Lidiane Cristina Vivaldini Olo
Thatiane Cristina dos Santos de Carvalho Ribeiro
Revisão Técnica
Vanessa Cadan Scheffer
Editorial
Camila Cardoso Rotella (Diretora)
Lidiane Cristina Vivaldini Olo (Gerente)
Elmir Carvalho da Silva (Coordenador)
Letícia Bento Pieroni (Coordenadora)
Renata Jéssica Galdino (Coordenadora)
ISBN 978-85-522-1335-2
CDD 001.61
2019
Editora e Distribuidora Educacional S.A.
Avenida Paris, 675 – Parque Residencial João Piza
CEP: 86041-100 — Londrina — PR
e-mail: editora.educacional@kroton.com.br
Homepage: http://www.kroton.com.br/
Sumário
Conceitos e características
dos sistemas distribuídos
Adriane Aparecida Loper
Objetivos de aprendizagem
Compreender o que são sistemas distribuídos, conhecer
os modelos de arquitetura de sistemas distribuídos e como
trabalhar com eles com maior flexilbilidade, disponibilidade
e agilidade para seus usuários. Além de compreender como
nos comunicamos e executamos serviços que são acessados
por milhares de usuários diariamente, tal como e-mails, sites,
entendendo uma pequena parte dessa estrutura gigantesca.
Rede de
comunicação
a) Heterogeinidade
A palavra já representa diversidade, diferenças. Para que essas
diferenças não sejam notadas pelos usuários, para que eles tenham
a visão de um sistema único, podemos organizar os sistemas
distribuídos por meio de uma camada de software, essa em
especial é denominada middleware, conforme Figura 1.2 trazida por
Tanenbaum (2007).
b) Sistemas abertos
Como definição de sistemas abertos temos a determinação se
esse sistema pode ser estendido e implementado de diversas formas.
Segundo Tanenbaum (2007), um sistema distribuído aberto é um
sistema que oferece serviços de acordo com regras padronizadas
que descrevem sua sintaxe e semântica. Como um exemplo de
sucesso do uso de sistemas distribuídos abertos, pode-se citar a
Internet, que utiliza protocolos de comunicação conhecidos e
que normalizam a troca de informações na rede. As suas principais
interfaces devem ser publicadas.
Como um exemplo de abertura em relação ao software é permitir
a introdução de novos serviços e a reimplementação dos velhos. Para
sistemas distribuídos, pode-se utilizar independência de fornecedores.
d) Escalabilidade
Sabemos que podemos conversar on-line com qualquer pessoa,
em qualquer lugar do mundo via conectividade mundial pela
Internet. Em função dessa globalização, a escalabilidade é uma das
mais importantes metas para os projetistas de sistemas distribuídos.
Coulouris (2007) define que a escalabilidade de um sistema
distribuído representa a potencialidade do seu funcionamento em
diferentes escalas.
Um sistema distribuído deve operar de forma eficiente e
independente da escala, por exemplo, desde uma pequena intranet
f) Concorrência
Tanenbaum (2007) descreve como estamos em um sistema
distribuído, há grande possibilidade de um recurso ser acessado
por vários clientes ao mesmo tempo e o servidor de um recurso
pode atender um cliente de cada vez. Por exemplo, uma estrutura
de dados que registre lances em um leilão. Temos um limitador
nessa situação que é a quantidade de dados processados em
um determinado espaço de tempo, por isso processamos
concorrentemente. Quando se tratar de concorrência em sistemas
distribuídos, deve-se tratar os aspectos relacionados à sincronização.
Sempre as respostas devem ser coerentes e consistentes.
g) Transparência
A transparência trabalha como sendo uma ocultação dos
componentes independentes em um sistema distribuído, fazendo
com o usuário tenha a visão do todo.
Tanenbaum (2007) apresenta que a ANSA (Advanced Network
Systems Architecture) e a ISO (International Standards Organization)
definem oito formas de transparência:
• Transparência de acesso: devem ser acessados com as mesmas
operações, sem que o usuário saiba se o recurso acessado é local
ou remoto.
Servidor de
Computadores
e-mail
Servidores de de mesa
impressão e outros
Rede local
Servidor web
Servidor de
e-mail
Impressão
Servidor de
arquivos Outros
servidores
Outras porções
da internet
Roteador/firewall
Internet
Fique ligado
Até aqui estudamos sistemas distribuídos, em suas definições e
metas com embasamento principalmente em Tanenbaum (2007)
que nos traz desafios são primordiais na construção de sistemas
distribuídos. São elas:
a. Heterogeinidade.
b. Sistemas abertos.
c. Segurança.
d. Escalabilidade.
e. Tratamento de falhas.
Atividades de aprendizagem
1. Aplicada em: 2010
Banca: FUNCAB
Órgão: SES-GO
Prova: Analista de Sistemas
<https://www.qconcursos.com/questoes-de-concursos/disciplinas/
tecnologia-da-informacao-arquitetura-de-computadores/sistemas-
distribuidos>
I. Heterogeinidade.
II. Segurança.
III. Transparência.
Aplicação de
gerenciamento Componente Componente Componente
da aplicação da aplicação da aplicação
Bibliotecas paralela paralela paralela
paralelas
SO local SO local SO local SO local
Aplicações
Camada coletiva
Camada base
a) Arquiteturas em camadas
As arquiteturas foram pensadas em termos de camadas, as
quais delimitam que componentes podem ser chamados ou
não, indo de camada a camada. Observamos na Figura 1.8, que
o fluxo, seguido pelas requisições, passa pelas camadas de cima
para baixo e o fluxo de repostas, inicia-se na camada inferior e
seguem para cima.
Camada N
Camada N-1
Fluxo de Fluxo de
requisição resposta
Camada 2
Camada 1
(a)
Fonte: Tanembaum (2007, p. 21).
Objeto Objeto
Chamada de
Objeto método
Objeto
Objeto
Componente Componente
(b)
Fonte: Tanembaum (2007, p. 21).
Componente Componente
Entrega de evento
Barramento de eventos
Publicar
Componente
a) Arquiteturas centralizadas
Coulouris (2007) diz que as arquiteturas centralizadas expressam
o conceito de que clientes solicitam serviços oferecidos por
servidores. Esse tipo de arquitetura cliente-servidor é mais utilizado
e menos complexo para implantação e administração comparado a
outras arquiteturas. Em determinado momento, o servidor também
Cliente
Solicitação
Processo
Servidor Servidor
Solicitação
Resultado
Processo Processo
Resultado
Cliente
Processo
Espera resultado
Cliente
Requisição Resposta
Servidor
Fornece serviço
Tempo
Fonte: Tanembaum (2007, p. 22).
Nível de
Interface de usuário Interface de
usuário
Expressão da Página HTML que
palavra-chave contém a lista
Gerador
de HTML Nível de
Gerador de Lista ordenada processamento
consultas de títulos de
Algoritmo de páginas
Consultas ao banco ordenação
de dados
Esperar resultado
Interface
de usuário Operação Retornar
(apresentação) de requisição resultado
Servidor de
Esperar dados
aplicação
Requisitar Retornar
dados dados
Servidor de
banco de dados
Tempo
b) Arquiteturas descentralizadas
Nessa arquitetura, os componentes não estão mais orientados
a requisições. Outra característica é colocar componentes
logicamente diferentes em máquinas diferentes.
Peer
Central
Peer
Cliente
Peer
Cliente
Peer
Cliente
Peer
Cliente
Peer
Servent
Peer
Servent
Peer
Servent
Peer
Servent
Peer
Servent
Fonte: Brito (2005, p. 22).
Figura 1.19 | Visão da internet como rede composta por um conjunto de servidores
de borda
Atividades de aprendizagem
1. Tanenbaum (2007) nos traz algumas definições quanto aso sistemas
distribuídos. Complete a lacuna.
_________________________, é formada uma organização virtual, fazendo com
que os direitos de acesso aos recursos da organização à qual você pertence
sejam compartilhados, oferecendo facilidades de armazenamento e banco
de dados, além de sensores.
Redes e sistemas
distribuidos
Nathalia dos Santos Silva Nolepa
Objetivos de aprendizagem
Nesta unidade você será apresentado aos conceitos
que compõem a base da comunicação entre processos de
componentes autônomos e desacoplados, ou seja, como
funcionam os protocolos, serviços e a troca de mensagens
que garante a interação dos componentes, para que os
sistemas distribuídos operem como conhecemos, como um
sistema único e coerente, seja na perspectiva cliente-servidor
ou em grupo.
Assim, a partir do conhecimento desse esquema de
organização, hierarquia e funcionamento, você entenderá
tanto como os processos se comunicam de maneira remota
quanto como funcionam internamente os sistemas com
essas características.
Para o usuário, o sistema distribuído se comporta como
um sistema tradicional, unificado, mesmo que ele possua seus
recursos fisicamente distribuídos em diversos computadores.
O nosso desafio, enquanto projetista de sistemas, consiste
basicamente em gerenciar as trocas de mensagens para o
compartilhamento seguro e coerente de recursos.
As propostas de arquitetura e organização discutidas
nesta unidade em geral são comuns aos mais diversos
sistemas distribuídos, pois embora eles possuam variação
em sua aplicação ao usuário final e os tipos de recursos que
compartilham, a comunicação entre os dispositivos e o acesso
a métodos internos é definida e implementada de maneira
padronizada, dentro de 4 tipos arquitetônicos definidos. A partir
do aprendizado dessas técnicas de comunicação remota, já
consolidadas, você poderá melhorar rotinas já existentes e
ainda criar novas aplicações.
Aplicativos
RMI e RPC
TCP e UDP
Sistemas Operacionais
Fonte: elaborada pela autora.
Aplicação Cliente
Objeto.Acao(parametro)
Chamada
interceptada
Chamada não
interceptada
Interceptação: nível
de requisição
Middleware Objeto
Interceptação: nível
de mensagem
Send(Objeto, Acao(parametro))
Atividades de aprendizagem
2.1 | Cliente-servidor
Permanece
Cliente Aguardando
tempo
Requisição Resposta
Servidor
tempo
Fornece
serviço
Interface de Banco de
usuário dados
Cliente Servidor
Mensagem de
requisição
DoOperation getRequest
•
•
(espera) Seleciona objeto
•
•
Executa método
(continuação) sendReply
Mensagem de
resposta
Nó real
{0,1}
Chaves de dados
associados
{8,9,10,11,12} {2,3,4}
{5,6,7}
Fique ligado
Aluno, você viu neste capítulo que os sistemas distribuídos
são implementados conforme a aplicação a que se destinam. As
implicações quanto aos papéis dos nós e o grau de confiabilidade
da aplicação irão determinar a configuração da camada middleware
adotada, bem como os protocolos que irão de fato executar a
comunicação entre os processos.
Rede pública
Base de
dados II
Aplicação I
Aplicação II
Dados Base de
pessoais dados I
Tecnologias de
implementação
Adriane Aparecida Loper
Objetivos de aprendizagem
Compreender o que são sistemas distribuídos baseados em
objetos, entendendo o que são objetos, sistemas distribuídos
e objetos distribuídos. Saber que esses objetos desempenham
papel de suma importância no estabelecimento da
transparência da distribuição. Entender como os arquivos
funcionam nos sistemas distribuídos e sua importância,
entendendo como milhares de pessoas pesquisam algo na
internet ao mesmo tempo e com eficiência.
84 U3 - Tecnologias de implementação
orientação a objetos, consiste em considerar os sistemas
computacionais como uma coleção de objetos que interagem
de maneira organizada e objetos computacionais são estruturas
de programação que contêm informações e os comportamentos
que representam um objeto dentro do sistema.
U3 - Tecnologias de implementação 85
distribuído sempre será um conjunto de computadores
independentes (com de hardware ou software) que se mostram
ao usuário, como se fosse um único sistema, funcionando com
transparência e agilidade.
Agora vamos juntar objetos com sistemas distribuídos?
86 U3 - Tecnologias de implementação
Figura 3.1 | Organização comum de um objeto remoto com proxy do lado do cliente
U3 - Tecnologias de implementação 87
também se denominam objetos remotos. Em um objeto distribuído,
o estado em si pode ser distribuído fisicamente por várias máquinas,
mas essa distribuição também fica oculta dos clientes sob as
interfaces de objetos.
Para Orfali, Hankey e Edwards (1996), objetos distribuídos não
são aplicações completas, podem ser usados em combinações
imprevisíveis. Possuem interface bem definida, fornecem
mecanismos para a notificação de eventos, possibilitam o
gerenciamento de configuração e propriedades.
Constatamos que o objeto distribuído é uma evolução do objeto
convencional. Entretanto possui uma interface específica em que os
compiladores geram um código a mais para ser acessado por outros
objetos de maneira que o programa/objeto que o solicite desconheça
o local onde o objeto chamado está localizado, o sistema operacional
que está sendo utilizado e a linguagem na qual foi criado.
Orfali, Hankey e Edwards (1996) afirma que a tecnologia de
objetos distribuídos permite a criação de sistemas cliente/servidor
mais flexíveis, visto que os dados são encapsulados nos objetos
que ficam distribuídos pela rede o que facilita sua localização em
qualquer parte do sistema.
1.5 | Comunicação
88 U3 - Tecnologias de implementação
e é ideal para aplicações cliente-servidor. Para Tanenbaum (2007),
a ideia que fundamenta RPC, é fazer com que uma chamada de
procedimento remoto seja “considerada” uma chamada local.
Queremos que a RPC seja transparente, ou seja, o procedimento de
chamada não deve estar ciente de que o procedimento chamado
está executando em uma máquina diferente e vice-versa, conforme
ilustrado na Figura 3.3.
Chamada de Retorno da
procedimento remoto chamada
Requisição Resposta
Servidor
Tempo
Chamada de procedimento
local e retorno de resultados
U3 - Tecnologias de implementação 89
h) O sistema operacional do servidor envia a mensagem ao
sistema operacional do cliente.
i) O sistema operacional do cliente dá a mensagem ao apêndice
de cliente.
j) O apêndice desempacota o resultado e retorna ao cliente.
Com essas etapas, nem o cliente nem o servidor ficam cientes
das etapas intermediárias ou da existência da rede, assemelhando-
se a uma chamada local.
1.6 | Middleware
90 U3 - Tecnologias de implementação
com as interfaces e não se preocupar com os detalhes da
implementação, como a linguagem de programação e o sistema
operacional usados.
c) Essa estratégia também proporciona soluções mais dinâmicas
e extensíveis, permitindo, por exemplo, a introdução de novos
objetos ou a substituição de um objeto por outro (compatível).
Estão disponíveis diversas soluções de middleware baseadas em
objetos distribuídos, por meio das tecnologias RMI Java e CORBA.
U3 - Tecnologias de implementação 91
e) Facilidades para ligação (binding) de interfaces dinamicamente.
f) Diversos serviços de suporte: como Nomes, Transação,
Tempo etc.
92 U3 - Tecnologias de implementação
1.7.1.1 | Java RMI - Modelos de objetos distribuídos e
invocações em Java
U3 - Tecnologias de implementação 93
estado do objeto, bem como uma implementação dos métodos
que operam sobre aquele estado. O apêndice do lado do servidor, o
esqueleto, é gerado de acordo com as especificações das interfaces
de objeto.
Ainda para Tanenbaum (2007), a classe que contém uma
implementação do código do lado do cliente, é chamada classe do
cliente. Essa classe contém uma implementação de um proxy e, assim
como o esqueleto, ela também é gerada de acordo com a especificação
da interface de objeto. O que esse proxy faz, simplificadamente, é
converter cada chamada de método em uma mensagem que é enviada
à implementação do lado do servidor do objeto remoto, e converter
uma mensagem de resposta no resultado, se for uma chamada
de método. O proxy estabelece uma conexão com o servidor para
cada chamada e, na sequência, essa conexão é terminada quando a
chamada for concluída. Para cumprir essa finalidade, o proxy precisa
do endereço de rede e da porta do servidor. Essa informação, junto
com o identificador local do objeto no servidor, é sempre armazenada
como parte do estado de um proxy.
Assim sendo, um proxy tem todas as informações de que
necessita para permitir que um cliente invoque métodos do
objeto remoto. Em Java, é possível montar um proxy e enviá-
lo como uma série de bytes para um outro processo em que
ele pode ser desmontado e utilizado para invocar métodos no
objeto remoto.
Conforme Tanenbaum (2007), há vários modos para implementar
as referêcias de objeto, que vão de simples estruturas de dados
passivas que descrevem exatamente onde um objeto remoto pode
ser contatado, até código portável, que precisa apena ser invocado
por um cliente como na RMI Java.
94 U3 - Tecnologias de implementação
Segundo Coulouris (2007), para atingir seus objetivos, o OMG
defendeu o uso de sistemas abertos baseados em interfaces
orientadas a objetos padrão. Esses sistemas seriam construídos a
partir de hardware, redes de computadores, sistemas operacionais
e linguagens de programação heterogêneos.
Uma motivação importante foi permitir que os objetos distribuídos
fossem implementados em qualquer linguagem de programação e
pudessem se comunicar uns com os outros. Portanto, foi projetada
uma linguagem de interface independente de qualquer linguagem
de implementação específica.
Os principais componentes do framework de RMI CORBA
independente de linguagem são:
a. Uma linguagem de definição de interface conhecida
como IDL.
b. Uma arquitetura.
c. Uma representação externa de dados, chamada CDR.
d. Uma forma padrão para referências de objeto remoto.
A arquitetura CORBA também admite serviços CORBA – um
conjunto de serviços genéricos úteis para aplicações distribuídas.
U3 - Tecnologias de implementação 95
1.7.2.2 | Modelo de objeto do CORBA
96 U3 - Tecnologias de implementação
Para saber mais
vamos entender um pouco mais de RMI. Então vamos ler o artigo:
RMI: Primeiros passos - Revista easy Java Magazine 17. Disponível em:
<https://www.devmedia.com.br/rmi-primeiros-passos-revista-easy-
java-magazine-17/24135>. Acesso em: 26 set. 2018.
Fique ligado
Até aqui estudamos objetos distribuídos e RMI, suas definições e
metas, com embasamento principalmente em Tanenbaum (2007)
e Coulouris (2007), que nos trazem desafios que são primordiais na
implementação de sistemas distribuídos.
Importante são as definições de objetos, sistemas distribuídos,
sistemas distribuídos baseados em objetos, objetos distribuídos,
U3 - Tecnologias de implementação 97
comunicação, chamada de procedimento remoto, relembrando os
conceitos de middleware e middleware de objetos.
Encerramos esta seção com exemplos RMI Java e Corba, que
são formas de trabalharmos com os sistemas distribuídos.
Atividades de aprendizagem
98 U3 - Tecnologias de implementação
a) IDL.
b) RPC.
c) DCON.
d) CORBA.
e) COM.
U3 - Tecnologias de implementação 99
Seção 2
Sistemas de Arquivos Distribuídos, Serviços de
nomes (DNS)
Introdução à seção
Requisições de
clientes para acessar Arquivo permanece
arquivo remoto no servidor
Fonte: Tanenbaum (2007, p. 296).
Arquivo velho
Arquivo novo
Operação v3 v4 Descrição
ID de porção, faixa
Servidor de Servidor de Servidor de
porção porção porção
Dados de porção
Sistema de Sistema de Sistema de
arquivo Linux arquivo Linux arquivo Linux
Fonte: Tanenbaum (2007, p. 300).
2.3 | Comunicação
c) Replicação de arquivos
Em um serviço de arquivos que suporta replicação, um arquivo
pode ser representado por diversas cópias de seu conteúdo
em diferentes locais. Isso tem duas vantagens – permite que
vários servidores compartilhem a carga do fornecimento de
um serviço para clientes que acessam o mesmo conjunto de
arquivos, melhorando a escalabilidade do serviço, e melhora
a tolerância a falhas, permitindo que, em caso de falhas, os
clientes localizem outro servidor que contenha uma cópia
do arquivo.
e) Tolerância a falhas
Como é um requisito fundamental nos sistemas distribuídos, o
serviço de arquivo distribuído continue seu funcionamento quando
houver falhas de clientes e servidores.
g) Segurança
Praticamente todos os sistemas de arquivos fornecem mecanismos
de controle de acesso baseados no uso de listas de controle de
acesso. Nos sistemas de arquivos distribídos, há necessidade de
autenticar as requisições dos clientes para que o controle de acesso
no servidor seja baseado nas identidades corretas de usuário e para
proteger o conteúdo das mensagens de requisição-resposta com
assinaturas digitais e/ou criptografia de dados.
h) Eficiência
Um serviço de arquivo distribuído deve oferecer recursos que
tenham pelo menos o mesmo poder e generalidade daqueles
encontrados nos sistemas de arquivos convencionais, e deve obter
um nível de desempenho comparável.
Fique ligado
Aqui estudamos sistemas de arquivos distribuídos, em seu modelo
cliente-servidor, que possuem requisitos para funcionar, que são:
a) Transparência.
b) Atualizações concorrentes de arquivos.
c) Replicação de arquivos.
d Heterogeneidade do hardware e do sistema operacional.
e) Tolerância a falhas.
Atividades de aprendizagem
1. Aplicada em: 2014 Banca: CESPE Órgão: SUFRAMA, Prova: Analista de
Sistemas (adaptada)
<https://www.qconcursos.com/questoes-de-concursos/disciplinas/
tecnologia-da-informacao-arquitetura-de-software>. Acesso em: 28 set. 2018.
4. Complete a lacuna:
Gerenciamento de redes
Objetivos de aprendizagem
Essa unidade tem como objetivo principal estudar o aspecto
físico dos sistemas distribuídos, tratando dos elementos
de hardware, projeto e gerenciamento do sistema. Dentro
desse contexto, há enfoque em apresentar os meios físicos
de comunicação de uma rede e como são compostos os
computadores e servidores que nela podem estar presentes.
Essa abordagem foca no comparativo entre as peças que são
utilizadas nos dois tipos de máquinas, tornando você capaz de
perceber como, em alguns casos, a rede distribuída é vantajosa
em relação à rede convencional baseada em servidor.
No âmbito do projeto e gerenciamento de um sistema
distribuído, o objetivo é tornar você capaz de determinar os
elementos que devem ser utilizados para a montagem de um
sistema, e como as diferentes camadas são gerenciadas de
forma a permitir o seu funcionamento.
Figura 4.1 | Cabos utilizados em redes de computadores: (a) coaxial, (b) UTP, (c) STP
e (d) fibra ótica
Aplicação
Transporte
LAN 1 LAN 2
Fonte: Forouzan (2010, p. 448).
Atividades de aprendizagem
Plataforma do Google
Dados e
GFS Chubby Bigtable
coordenação
Paradigmas de
Buffers de protocolo Publicar-assinar
comunicação
Atividades de aprendizagem
1. Quando o Google optou por utilizar um sistema distribuído, composto
por vários PCs, em detrimento ao uso de servidores com alto poder de
processamento, ele sabia que falhas poderiam acontecer. Cite as falhas
que foram encontradas na topologia com vários computadores.
Fique ligado
Nesta unidade foram apresentados os seguintes tópicos:
• Elementos componentes de redes.
• Meios físicos de conexão à rede.
• Dispositivos de rede.