SISTEMAS
DISTRIBUÍDOS
Histórico
 Anos
50 - Sistemas Operacionais tipo
Lote:
Aumentar
a capacidade de processamento
de programas
Usuário
ia ao computador
Processamento
Seqüencial
Histórico
 Sistema
de tipo Lote com E/S através de
um sistema auxiliar
 Dispositivo
especial
 Transporte
manual de fitas
 “Distribuição
local” do processamento
 Sistema de computação centralizado
Histórico

Sistema de Interrupção e Canais de E/S




Automação da E/S das fitas
Multiprogramação
Sistema de Computação Centralizado
Sistemas Operacionais de Tempo
Compartilhado

Aumentar a produtividade dos programadores

Computador vai ao usuário

Surgimento dos terminais de E/S

Distribuição da apresentação dos dados
Histórico
 Mainframes
interligados
 Distribuição
da Apresentação dos Dados (terminais de E/S)
 Distribuição
do Processamento
 Comunicação
de Dados e
Teleprocessamento
 Processamento
 Apresentação
Centralizado
da Informação - Distribuída
Histórico
 Anos
80 - Surgimento dos
Microcomputadores:
 Produtividade
 Conexão
dos usuários e desenvolvedores
com os mainframes
 Apresentação
 Crescimento
dos dados
da distribuição do processamento
Histórico
 Anos
80 - Difusão da Tecnologia da
Informação:
 Instrumento
de transformação dos processos de negócios
das empresas
 Aumento
insignificante dos níveis de produtividade com
relação aos investimentos em TI
 Perda
em níveis de produtividade quando profissionais
trabalham individualmente
Histórico
Anos
90 - Interligação dos Recursos:
Surgimento
Essência
Evolução
das Redes Locais
da Computação Distribuída
da tecnologia de redes
Repetidor,
ponte, roteador, gateway
Histórico
 Sistema
de Rede:
Compartilhar periféricos, dados, programas
 Acessar base de dados
 Comunicação entre usuários
 Computadores autônomos
 Sistemas Operacionais: independente e de
rede
 Interação em forma de comunicação
 Gerenciamento do sistema

Histórico
 Sistemas
Distribuídos
Extensão dos sistemas de redes onde a
interação inclui comunicação e
cooperação/colaboração.
 Cooperação

▪
▪

Todos por todos.
Cada um com a sua tarefa.
Colaboração
▪
▪
Todos por um.
Todos com a mesma finalidade.
Definição
Um
Sistema Distribuído é:
Uma
coleção de computadores
independentes que aparecem para o
usuário como um único sistema
coerente - Tanenbaum
É um sistema em que os componentes
se localizam em uma rede de
computadores e coordenam suas ações
através de passagem de mensagens Coulouris
Características
Heterogeneidade
Abertura
Escalabilidade
Segurança
Tratamento
de falhas
Concorrência
Transparência
Heterogeneidade
 Aplica-se
a:
Redes
 Hardware de computador
 Sistemas Operacionais
 Linguagens de programação
 Implementações por diferentes
programadores

 Soluções:
Middleware
 Máquinas virtuais (ex: Applets Java)

Abertura
 Determina
se o sistema pode ser
estendido ou reimplementado de
diversas maneiras.
 Como alcançar:
Publicação de interfaces
 Documentação e especificação
 Código aberto (Open-source)

 Exemplos:
RFCs
 Repositório

Escalabilidade
 Suporta
o aumento dos recursos e
usuários mantendo um desempenho
satisfatório.
 Desafios:
Controlar o custo dos recursos físicos
 Controlar a perda de performance
(quantidade)
 Prevenir esgotamento de recursos (ex: IP)
 Evitar gargalos de performance
(centralização)

Segurança
Características
Confidencialidade
Integridade
Disponibilidade
Desafios
Negação
de Serviço (DoS)
Código Móvel
Tratamento de Falhas
Tipos
de falhas
Física,
software e humana
Técnicas:
Detecção
de falhas
Ocultação de falhas
Tolerância a falhas (replicação)
Recuperação de falhas
Concorrência
Permitir
que recursos compartilhados
sejam utilizados por diversos
processos
Questões:
Sincronização
Disponibilidade
Segurança
Transparência
Transparência de acesso: recursos locais e remotos
são acessados pelas mesmas operações.
 Transparência de localização: recursos são
acessados sem que sua localização seja
determinada.
 Transparência de concorrência: processos
executam concorrentemente, utilizando recursos
compartilhados, sem interferirem na execução dos
outros.
 Transparência de replicação: múltiplas cópias de
um recurso para aumentar a performance e
disponibilidade dos seus serviços, sem o
conhecimento das réplicas por usuários e
programadores.

Transparência

Transparência a falhas: ocultar e tratar as falhas,
hardware ou software, permitindo que as aplicações
ou usuários completem suas tarefas.

Transparência de mobilidade: movimento de
recursos ou clientes dentro do sistema não podem
afetar a operação dos usuários ou programas.

Transparência de performance: sistema deve
permitir ser reconfigurado para melhorar a
performance conforme a variação de carga.
Tipos de Sistemas
Distribuídos
Sistemas de Computação
Distribuídos

Utilizada para tarefas de computação de alto
desempenho.
Geralmente,
utilizados
para
processamento de grandes conjuntos de dados
(Computação intensiva)

Algumas aplicações:

Pesquisa da cura de doenças (AIDS, câncer)

Descoberta de vida Extra-Terrestre

Processamento de imagens (NASA)

Processamentos de dados climáticos
Sistemas de Computação
Distribuídos

Dois tipos principais:
 Computação
em cluster
 Computação
em grade
Sistemas de Computação
Distribuídos

Computação em cluster
 Um
conjunto de computadores conectados em
rede de alta velocidade sendo utilizado, em geral,
para programação paralela.
 Grande
ganho na relação preço / desempenho
 Geralmente,
utiliza-se máquinas iguais e o
mesmo Sistema Operacional
Cluster
► Cluster (ou clustering) é um sistema que relaciona dois ou mais
computadores para que estes trabalhem de maneira conjunta no intuito
de processar uma tarefa.
► Dividem entre si as atividades de processamento e executam este
trabalho de maneira simultânea.
► Cada computador que faz parte do cluster recebe o nome
de nó (ou node).
► Deve ser "transparente", ou seja, ser visto pelo usuário ou por outro
sistema que necessita deste processamento como um único
computador.
► É extremamente importante que o padrão adotado permita a inclusão
ou a retirada de nós com o cluster em funcionamento, do contrário, o
trabalho de remoção e substituição de um computador que apresenta
problemas, por exemplo, faria a aplicação como um todo parar.
Cluster
Sistemas de Computação
Distribuídos

Computação em grade
 Conjunto
de computadores de diferentes
hardwares, softwares, tecnologia de rede e
pertencentes a organizações diferentes.
 Alto
grau de heterogeneidade
 Hardware,
O
sistema operacional, rede, etc.
recursos de diferentes organizações são
reunidos para permitir a colaboração de um grupo
de pessoas ou instituições.
Grid
Grade

É um modelo de rede de computadores onde os recursos de cada
computador são compartilhados com todos os outros computadores
no sistema.

Poder de processamento, memória e armazenamento de dados se
tornam recursos “coletivos”, onde usuários que tem autorização
podem utilizar e aproveitar para determinadas tarefas.

O projeto Search for Extraterrestrial Intelligence (SETI) foi um dos
primeiros sistemas em grade a ganhar a atenção.

A missão do SETI é analisar dados reunidos por rádio-telescópios na
busca de evidências de comunicação alienígena inteligente.

O projeto SETI criou um programa chamado SETI@home, que
interliga computadores conectados em rede para formar um
supercomputador virtual.
Grade
Sistemas de Informação Distribuídos

Têm como característica
aplicações existentes.

Principal desafio é a interoperabilidade das
aplicações, isto é, uma aplicação conseguir
“conversar” com a outra aplicação.
a
integração
das
Sistemas de Informação Distribuídos

Dois tipos principais:
 Sistema
de Processamento de Transação
 Integração
de Aplicações Empresariais
Sistemas de Informação Distribuídos

Sistema de Processamento de Transação
 Em
geral, são aplicações centradas em
transações de banco de dados. A aplicação é
formada por um conjunto de transações.
 Transações
podem conter sub-transações e
acessar mais de um banco de dados.
Normalmente são monitoradas por um Monitor de
transação.
Sistemas de Informação Distribuídos

Sistema de Processamento de Transação
 As
transações devem ser:
 Atómicas:
transação é indivisível
 Consistentes:
 Isoladas:
 Duráveis:
não viola invariantes do sistema
Permite transações concorrentes
após o “commit” de uma transão as alterações
feitas ficam gravadas
Propriedades das transações

Atômicas: para o mundo exterior, a transação
acontece como se fosse indivisível.

Consistentes: a transação não viola invariantes de
sistema.

Isoladas: transações concorrentes não interferem
umas nas outras.

Duráveis: uma vez comprometida uma transação, as
alterações são permanentes

ACID (para memorizar)
Exemplo de Transação
Aninhada
Integração usando Monitor TP
Integração usando
Middleware de comunicação
Sistemas Distribuídos
Pervasivos


Sistemas decorrentes do uso de computação móvel
e embutida, nas quais o comportamento esperado é
a instabilidade;

Pequeno tamanho

Alimentados por bateria;

Comunicação sem fio;
Não possui controle administrativo humano,
podendo:

Adotar mudanças contextuais

Incentivar composição ad hoc

Reconhecer compartilhamento como padrão
Sistemas Pervasivos - Exemplos
Sistemas para tratamento de
Saúde
Sistemas Pervasivos - Exemplos
Redes de sensores sem fio
Sistemas de Informação Distribuídos
Sistemas de Informação Distribuídos

Integração de Aplicações Empresariais

São sistemas onde os componentes de aplicações se
comunicam diretamente um com o outro, e não por meio de
um sistema de processamento de transação.

Surgiram da necessidade de integrar as diversas
aplicações de/entre empresas.

A ideia é que os componentes das aplicações passem a se
comunicar diretamente.
Sistemas de Informação Distribuídos

Integração de Aplicações Empresariais
 Muitos
modelos de comunicação entre
aplicações:
de procedimento remoto (RPC – Remote
Procedure Calls)
 Chamadas
de método remoto (RMI – Remote Method
Invocations)
 Inovações
orientado a mensagem (MOM – Messageoriented Middleware)
 Middleware
Sistemas Distribuídos Pervasivos

Sistemas Distribuídos Pervasivos

A estabilidade não é mais a regra

Entrada da computação móvel e embutida

A instabilidade é o comportamento esperado

Ausência geral de controle administrativo humano

Configurado por seus proprietários

Os dispositivos descobrem automaticamente seu ambiente e
se encaixa o melhor que puderem

Aspecto importante, os dispositivos se juntam ao sistema
para acessar informações

Não existe transparência!!!
Sistemas Distribuídos Pervasivos

Três exemplos:
 Sistemas
Domésticos
 Sistemas
eletrônicos para tratamento de saúde
 Redes
de Sensores
Escalabilidade
São três os critérios para se
estabelecer a escalabilidade:
1.
Quanto ao seu tamanho: Um
sistema é escalável em relação
ao seu tamanho, quando é
possível se inserir mais usuários
e recursos ao sistema em si.
2. Quanto ao local: Um sistema é escalável do ponto de
vista geográfico, quando os usuários e recursos podem
estar um longe dos outros.
3. Quanto a sua administração: Um sistema é escalável do
ponto de vista de sua administração quando ele pode
ser facilmente gerenciado, mesmo que abranja muitas
organizações administrativas distintas.
Escalabilidade
Mas, existem problemas...
Quando um sistema escalável contém essas várias
dimensões, muitas vezes apresenta queda de
desempenho na medida em que é ampliado
Conceito
Exemplo
Serviços Centralizados
Único servidor para todos os
dados
Dados Centralizados
Lista telefônica on-line
Algoritmos Centralizados
Fazer roteamento com base
em informações completas
Escalabilidade - Problemas

Tamanho: Ao inserirmos continuamente
mais usuários tendemos a chegar a um
ponto onde o servidor centralizado atinja
seu limite operacional, transformando-se
no gargalo do sistema.

Mesmo que admitamos que esse servidor
tenha capacidade de processamento e de
armazenagem ilimitadas, ainda assim
sofrerá restrições devido a sua
capacidade de comunicação ser limitada.
Escalabilidade - Problemas

Segurança: Imaginemos um servidor
destinado apenas ao armazenamento de
informações sigilosas sobre dados
médicos, financeiros ou confidenciais de
pessoas.

Nesse caso, a implementação
obrigatoriamente terá que ser feita num
único servidor que deve estar numa sala
separada, de alta segurança, separado de
outras partes do sistema.

Copiar o servidor para melhorar o
desempenho para outras localizações,
definitivamente, não seria uma boa ideia,
nessa situação.
Escalabilidade - Problemas

Impensável também seria uma solução com
dados centralizados que contivesse os dados de
50 milhões de pessoas. Não haveria limitações
quanto ao espaço em disco armazenado, mas
sem dúvida haveria saturação de todas as linhas
de comunicação que o acessam.

É o que ocorreria, por exemplo, se todo Sistema
de Nomes de Domínio (Domain Name System –
DNS) estivesse implementado numa única tabela.
Se cada requisição para resolver um URL fosse
passada para esse hipotético servidor, ninguém
estaria usando a Web (o que seria uma solução
ao problema, também...).
Escalabilidade e o tipo de comunicação





A localização de um serviço numa rede local é
representada no esquema abaixo, baseada em
broadcast.
Um processo envia a todas máquinas, perguntando a
cada uma se está executando o serviço que ele
necessita.
Apenas as máquinas que estão executando tal serviço
respondem informando seu endereço.
Basta imaginar o que ocorreria se tentássemos localizar
dessa maneira um serviço na Internet...
Em vez disso, é preciso projetar
serviços especiais de localização,
que talvez tenham alcance
mundial e capazes de atender
a bilhões de usuários.
Escalabilidade e o tipo de
comunicação

Ampliar sistemas distribuídos a partir de sistemas
projetados para redes locais é algo difícil, pois estes
foram criados a partir da filosofia síncrona.

Assim quando uma parte requisita um serviço, fica
bloqueada até que uma mensagem seja enviada de
volta. Numa rede local (LANs), na pior das hipóteses o
retorno dessa mensagem demora algumas centenas de
microssegundos.

Todavia, quando pensamos numa rede de longa
distância, essa comunicação pode demorar centenas de
milissegundos, ou seja, três ordens de grandeza mais
lenta. Ainda existe a questão de que em redes de longa
distância a comunicação é não confiável.
Técnicas de Escalabilidade
1.
Ocultar latências de comunicação

A ideia central é simples: evita-se esperar por
respostas a requisições remotas, evitando esperar
por respostas a requisições remotas (e lentas).

Uma requisição a uma máquina remota fica
pendente, enquanto esta é liberada para continuar
executando trabalhos úteis ao lado requisitante.
Técnicas de Escalabilidade
1.

Ocultar latências de comunicação

Essencialmente a aplicação requisitante
deve ser escrita usando comunicação
assíncrona para evitar bloquear processos
à espera de receber respostas.

Quando a resposta retorna, a aplicação é
interrompida e um manipulador especial é
chamado para concluir a requisição
emitida anteriormente.
Implica no tratamento de respostas como
eventos e o uso de do conceito de várias
tarefas em paralelo para continuar
processamento.
Técnicas de Escalabilidade
1.
Ocultar latências de comunicação

Exemplificando, se um acesso for feito a um banco de dados
por meio de formulários (a), o preenchimento de formulários
pode ser feito com o envio de uma mensagem separada para
cada campo e a espera por um reconhecimento do servidor,
que verifica se há algum erro sintático antes de aceitar a
entrada.

Ora, uma alternativa bem melhor é apresentada no outro
esquema (b), onde o cliente é quem preenche o formulário e
devolve completamente preenchido.

Essa é a forma usada
atualmente suportada
pela Web, sob a forma
de applets e Java e
Javascript.
Técnicas de Escalabilidade
Técnicas de Escalabilidade
2.
Distribuição

A idéia é distribuir entre vários computadores os
serviços e dados. Decompondo os componentes
em partes menores, que por sua vez são
distribuídas por todo o sistema distribuído.

Exemplificando, o DNS (Sistema de Nomes de
Domínios da Internet), o espaço de nomes do
DNS é organizado em hierarquia em uma árvore
de domínios, dividida em zonas de superposição
em acordo com a figura. Assim, nenhum servidor
prestará todos os serviços nem possuirá todos os
dados, portanto se um servidor falhar, nem tudo
está perdido...
Técnicas de Escalabilidade
Técnicas de Escalabilidade
3.
Replicação

Aumenta a disponibilidade dos serviços e melhora
o balanceamento de carga no sistema, resultando
na melhoria do desempenho.

Aumenta a disponibilidade do serviço nas zonas da
rede onde há réplicas.
Caching é uma forma de replicação controlada
pelo cliente. A existência de várias cópias pode
levar a problemas de consistência.
Se for necessário ter garantias fortes de
consistência tem de se atualizar as cópias
imediatamente. Além disso, se duas atualizações
ocorrerem simultaneamente, também se exige a
atualização de cada cópia na mesma ordem.


As ciladas da escalabilidade

Premissas falsas adotadas ao se
desenvolver pela primeira vez uma
aplicação distribuída:
1.
Rede é confiável
2.
Rede é segura
3.
Rede é homogênea
4.
Topologia constante
5.
Latência é zero
6.
Largura de banda é infinita
7.
Custo de Transporte é zero
8.
Existe somente um administrador
Exemplo de solução (Escalabilidade)

Internet Banking


Soluções bancárias on-line têm muitas características e capacidades em
comum, mas tradicionalmente também têm algumas particularidades que
são específicas da aplicação.
Categorias


Transacionais (por exemplo, realizando uma operação financeira como
uma transferência de conta para conta, pagamento de uma conta,
transferência bancária e aplicações até pedir um empréstimo, etc)

Apresentação da Fatura e do Pagamento por meio Eletrônico.

Transferência de fundos entre a conta de um cliente, sua poupança ou a conta
de outro cliente.

Investimentos
Não transacionais (por exemplo, as declarações online, os links de
seleção, chat, etc)

Extratos Bancários.

Saldos.
Exemplo de solução (Escalabilidade)

"Home banking" também pode se referir ao uso de um
teclado numérico para enviar tons abaixo de uma linha
telefônica com instruções para o banco.

O serviço on-line começou em Nova York em 1981,
quando quatro dos principais bancos da cidade (Citibank,
Chase Manhattan, Chemical e Manufacturers Hanover)
ofereciam serviços de home banking usando o sistema de
videotexto.
Por causa do fracasso comercial de videotexto
esses serviço bancário nunca se tornou
popular, exceto na França, onde o uso de
Videotexto (Minitel) foi subsidiado pelo
serviço de telefonia e do Reino
Unido, onde o sistema Prestel foi usado.

Exemplo de solução (Escalabilidade)

Internet Banking – Segurança (exemplo, continuação)

Proteção através de auntenticação de senha única, como é o caso na maioria
dos sites de compras seguros. Essa sistemática nem sempre é considerada
segura por alguns países. Basicamente existem dois métodos diferentes de
segurança para bancos online:

O PIN/TAN sistema em que o PIN é uma senha, utilizados para o login e
TANs representando uma lista de senhas de autenticação. TANs podem ser
distribuídos de diferentes maneiras, a mais popular é o de enviar uma lista
de TANs para o usuário do banco. A maneira mais segura de usar TANs é
para gerá-los por necessidade dependendo do tempo num algoritmo
chamado de dois fatores. Normalmente transações bancárias on-line com
PIN / TAN são feitas através de um navegador da Web usando conexões SSL
protegido, de modo que não há necessidade de criptografia adicional.
Exemplo de solução (Escalabilidade)

Internet Banking – Segurança (exemplo,
continuação)
 Assinatura
bancária online baseada em todas as
transações criptografadas e assinadas
digitalmente. As chaves para a geração de
assinatura e criptografia podem ser
armazenados em cartões inteligentes ou
qualquer outro meio de memória, dependendo
da aplicação concreta.
Técnicas de Escalabilidade

Internet Banking – Segurança (exemplo, continuação)

Ataques


A maioria dos ataques a operação bancária em linha usados hoje são
baseados em enganar o usuário para roubar dados de login e TANs
válidos. Exemplos bem conhecidos são phishing e os keylogger / cavalos
de tróia.

Outro método de ataque consiste na manipulação do software usado de
tal maneira que as operações corretas são mostrados na tela e
transações falsas são assinadas em segundo plano.
Contramedidas

Existem várias contramedidas que tentam evitar ataques. Certificados
digitais são usados contra phishing e pharming, o uso da classe-3 leitores
de cartão é uma medida para evitar a manipulação das operações com o
software baseado na assinatura variantes banking. Para
proteger seus sistemas contra cavalos de Tróia,
os usuários devem usar antivírus e ter cuidado
com o software baixado ou anexos enviados
por e-mail.
Técnicas de Escalabilidade

Internet Banking – Segurança (exemplo, continuação)

Ataques


A maioria dos ataques a operação bancária em linha usados hoje são
baseados em enganar o usuário para roubar dados de login e TANs
válidos. Exemplos bem conhecidos são phishing e os keylogger / cavalos
de tróia.

Outro método de ataque consiste na manipulação do software usado de
tal maneira que as operações corretas são mostrados na tela e
transações falsas são assinadas em segundo plano.
Contramedidas

Existem várias contramedidas que tentam evitar ataques. Certificados
digitais são usados contra phishing e pharming, o uso da classe-3 leitores
de cartão é uma medida para evitar a manipulação das operações com o
software baseado na assinatura variantes banking.

Para proteger seus sistemas contra cavalos de Tróia, os usuários devem
usar antivírus e ter cuidado com o software baixado ou anexos enviados
por e-mail.
RPC - Chamada de procedimento
Remoto
Definição
Permite que um programa procedural chame uma
função que reside em outro computador tão
convenientemente como se esta função fosse parte
do mesmo programa que executa, no mesmo
computador.
Chamada de procedimento Remoto
Chamada de procedimento Remoto
Chamada de procedimento Remoto
Definição
RPC foi desenvolvida para permitir aos programadores
se concentrar nas
tarefas exigidas
chamando funções e, tornando
de um
transparente
programa
ao
programador o mecanismo que permite que as partes do
aplicativo se comuniquem através de uma rede.
Chamada de procedimento Remoto
História:
A idéia de RPC data de 1976, quando foi descrito no RFC 707. Um dos
primeiros usos comerciais da tecnologia foi feita pela Xerox no
"Courier", de 1981.
A primeira implementação popular para Unix foi o Sun RPC (atualmente
chamado ONC RPC), usado como base do Network File System e que
ainda é usada em diversas plataformas.
Chamada de procedimento Remoto
História:
De forma análoga, atualmente utiliza-se XML como
linguagem de descrição de interface e HTTP como
protocolo de rede para formar serviços web, cujas
implementações incluem SOAP e XML-RPC.
Chamada de procedimento Remoto

Características:

a definição de um procedimento remoto especifica
parâmetros de entrada e de saída.

parâmetros de entrada são passados para o servidor enviando
os valores dos argumentos na mensagem (request message).

parâmetros de saída são retornados para o cliente na
mensagem de resposta (reply message).

um procedimento remoto é executado em um ambiente
diferente do seu chamador e não pode acessar variáveis do
ambiente do chamador, como variáveis globais por exemplo
Chamada de procedimento remoto
Chamada de procedimento Remoto
Funcionamento:

O cliente na inicialização localiza o servidor.

O cliente invoca um procedimento local (stub), que
serializa os parâmetros (marshalling), constrói uma
mensagem, invoca a camada de comunicação e bloqueia.
Chamada de procedimento Remoto
Funcionamento:

O servidor recebe a mensagem e:
-faz o despacho para o stub apropriado.
-este recupera os parâmetros (unmarshalling), e chama o
procedimento escrito pelo programador.
-o resultado é serializado e uma mensagem é enviada de
volta.

O stub do cliente recebe a mensagem, faz o unmarshalling
e devolve a resposta ao código cliente.
Chamada de procedimento Remoto
Chamada de procedimento Remoto
Stubs:
 Escondem
 Protege
os códigos de chamada à rede.
as aplicações (cliente e servidor) dos
detalhes referentes à comunicação pela rede.
 Cabe
ao stub a passagem de parâmetros entre os
procedimentos.
Chamada de procedimento Remoto
Sistemas RPC divididos em duas classes:
A) mecanismos RPC integrados a uma linguagem de
programação particular que inclui uma notação para
definir as interfaces
o cliente utiliza-se de bibliotecas de
procedimentos convencionais para realizar as
tarefas, como por exemplo a localização de um
servidor que possa tratar seus requisitos. Tais
bibliotecas são chamadas de user package.
Chamada de procedimento Remoto
B) Uso de de uma linguagem de definição de interface
(IDL) para descrever as interfaces entre clientes e
servidores.
Uma interface especifica as características dos
procedimentos fornecidos por um servidor que são
visíveis aos clientes deste servidor. Estas
características incluem: nomes dos procedimentos e
os tipos de seus parâmetros (assinatura).
Chamada de procedimento Remoto
IDL – Interface Definition Language
As interfaces são especificadas num formato
independente de linguagem: as IDL.
Isto permite que
muitos detalhes
implementação sejam escondidos da
especificação da interface.
de
Chamada de procedimento Remoto
IDL
Especifica características dos procedimentos fornecidos
por um servidor que são visíveis aos clientes do
servidor:
Assinaturas dos procedimentos, ou seja, seus nomes,
junto com os tipos de seus argumentos de entrada e
saída.
Exemplo de IDL
Chamada de procedimento remoto
Implementação:
O software que suporta RPC tem três tarefas:

a) Processar a interface: integrar mecanismos RPC
com os programas cliente e servidor em uma
linguagem de programação convencional. Isto inclui
o marshalling e unmarshalling de argumentos no
cliente e no servidor e o despacho das mensagens de
request para o procedimento apropriado no servidor.

b) Tratar a comunicação: transmitir e receber
mensagens de request e reply

c) Ligar (binding): localizar o servidor apropriado
para um serviço particular
Chamada de procedimento remoto
Processar a interface:
Construindo o programa cliente: Antes que um
programa cliente possa executar, chamando os
procedimentos remotos, é preciso que o stub seja
gerado.
O stub tem o propósito de converter uma chamada a
um procedimento para uma chamada remota ao
mesmo procedimento.
Chamada de procedimento remoto
STUB
A tarefa do stub do cliente é fazer o marshalling, isto é,
empacotar os argumentos do procedimento, os valores
de tipos de dados simples e o identificador do
procedimento em uma mensagem. O cliente deve enviar
a mensagem ao servidor e esperar pela resposta. Quando
a resposta retorna, o cliente deve fazer o unmarshalling
(processo
resultados.
inverso
ao
marshalling)
e
retornar
os
Chamada de procedimento remoto
Programa servidor:
Um sistema RPC fornecerá um despachador e um
conjunto de stubs para os procedimentos.
O despachador usa o identificador do procedimento na
mensagem enviada pelo cliente para selecionar um
dos stubs e passar os argumentos.
A tarefa de um stub no servidor é fazer o unmarshalling
dos argumentos, chamar o procedimento apropriado,
e quanto retornar, fazer o marshalling dos
argumentos de saída.
Chamada de procedimento remoto
Existe um compilador de interfaces para processar as
definições de uma interface escritas em uma
linguagem de definição de interface (IDL).
Tais compiladores são projetados para produzir
componentes que podem ser combinados com
programas clientes e programas servidores, sem
quaisquer modificações nos compiladores originais.
Chamada de procedimento remoto
Chamada de procedimento remoto
RPC-sun e rpcgen
RPC-sun : criado orginalmente para máquinas sun. Hoje
disponível em vários sistemas.
Constitui-se de:

Uma linguagem de definição de interfaces (RPCL).

Aplicativo rpcgen, que cria os stub de comunicação

Biblioteca RPC

Protocolo de comunicação para as aplicações.
Chamada de procedimento remoto
Chamada de procedimento
remoto
Rpc-gen – criação dos arquivos
Chamada de procedimento remoto
Ligar (binding):
Um cliente para enviar uma mensagem a um servidor,
deve utilizar um serviço de nomes disponível no
sistema distribuído.
O cliente procura neste serviço de nomes por um servidor
que possa atender à sua chamada de procedimento.
Em geral o serviço é executado por servidores portmmap.
Chamada de procedimento remoto
Portmapper:

O portmapper RPC é um servidor que converte
números de processos RPC em números no protocolo
TCP/IP (ou UDP/IP).

Ele deve estar executando para que seja possível
realizar chamadas RPC para servidores RPC em
determinada máquina.

Quando um servidor RPC é iniciado, ele irá dizer ao
portmap qual número de porta ele está ouvindo, e
quais programas RPC ele está preparado para atender.
Chamada de procedimento remoto
Portmapper:
110
111
(a) Grupo Fechado
(b) Grupo Aberto
(a) Comunicação
em Grupo de
Semelhantes
(b) Comunicação
em Grupo
Hierárquico.
112
113
114
115
É uma operação, ou conjunto de operações, em
uma base de dados, ou em qualquer outro
sistema computacional, que deve ser executada
completamente em caso de sucesso, ou ser
abortada completamente em caso de erro.
Um exemplo prosaico que ilustra este conceito é
o da gravidez.
Não se diz que uma mulher está "meio grávida";
ou ela está grávida ou não está.
116
117
O exemplo clássico é aquele da transferência
entre duas contas bancárias.
No momento de uma transferência de valores de
uma conta "A" para uma conta "B", que envolve
pelo menos uma operação de ajuste no saldo
para cada conta, se o computador responsável
pela operação é desligado por falta de energia,
espera-se que o saldo de ambas as contas não
tenha se alterado.
Neste caso são utilizados sistemas que suportam
transações atômicas.
118
119
É implementada por algum mecanismo que
indica que a transação foi iniciada ou terminou,
ou pela manutenção de uma cópia dos dados
feita antes do início da transação.
Os sistemas de arquivo que implementam
transações atômicas normalmente utilizam
métodos como o journaling que evitam a cópia
dos dados.
120
Os SGBDs utilizam sistemas de log de dados
que gravam os dados ainda não confirmados.
No caso da confirmação da transação (commit),
esses dados são consolidados na base de
dados, por outro lado, na ocorrência de algum
problema esses dados são descartados
(rollback).
121
122
123
124
125
126
127
Download

Sistemas Distribuídos - Universidade Castelo Branco