Buscar

Aplicações Distribuídas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Exercícios slides 2 página 62
O que é um sistema distribuído?
Conjunto de computadores independentes que se apresenta a seus usuários como um
sistema único e coerente.
O que é middleware?
É a camada de software situada entre as aplicações e os SO em um sistema distribuído.
O que o sistema distribuído proporciona?
Permite que componentes de uma única aplicação distribuída se comuniquem uns com os
outros e que diferentes aplicações se comuniquem.
O que é groupware?
SOftwares de edição colaborativa, teleconferência, etc.
Quais são os problemas apresentados pela escalabilidade?
1 - Tamanho = ao inserir mais usuários tende-se a chegar num ponto onde o servidor
centralizado atinge seu limite operacional;
2 - Segurança.
Quais os três critérios para estabelecer escalabilidade?
1 - Quanto ao seu tamanho = quando é possível inserir mais usuários e recursos ao
sistema.
2 - Quanto ao local = quando os usuários e recursos podem estar longe dos outros.
3 - Quanto a sua administração = quando ele pode ser facilmente gerenciado, mesmo que
abranja muitas organizações distintas.
Por que é difícil ampliar um sistema projetado para redes locais para ser distribuído?
Pois estes foram criados a partir da filosofia síncrona.
Quais são as técnicas de escalabilidade?
1 - Ocultar latências de comunicação (evitar esperar por respostas a requisições remotas).
2 - Distribuição (distribuir entre vários computadores os serviços e dados).
3 - Replicação (por exemplo, caching).
O que são threads?
É um fluxo sequencial de execução que percorre um programa.
Diferenças entre thread e processo:
Thread = mais leve, recursos compartilhados, endereçamento compartilhado, ambiente de
execução compartilhada, existe dentro de um processo.
Processo = mais pesado, recursos próprios, endereçamento próprio, ambiente de execução
próprio, possui ao menos uma thread.
Quais são as vantagens da thread?
1 - A criação e término de uma thread é em geral mais rápida que a de um processo.
2 - A comutação entre threads é mais rápida que a entre processos.
3 - A comunicação também.
4 - Multiprogramação com threads é mais simples e mais portável que a com múltiplos
processos.
Qual pacote se encontra a classe Thread?
java.lang
Qual o serviço do escalonador de threads?
Alternar o tempo de execução de cada thread.
Quando a troca de contexto ocorre?
Quando o escalonador salva o estado da thread atual para recuperar depois e para sua
execução. Nesse momento uma nova thread pode ser criada ou uma outra que estava
parada pode voltar.
Quais os níveis de prioridade de uma thread?
Pode ir de 1 (MIN_PRIORITY) a 10 (MAX_PRIORITY). É importante lembrar que uma
thread herda a prioridade da thread que a criou.
O que acontece se todas as threads tiverem a mesma prioridade?
A CPU é alocada para todos, um de cada vez, em modo round-robin (algoritmo)
O que é interleaving?
Interferência que acontece quando duas operações, rodando em threads diferentes, atuam
sobre o mesmo projeto. Os passos realizados pelas operações se sobrepõe.
O que é o garbage collector?
É uma thread responsável por jogar fora todos os objetos que não estão sendo
referenciados.
É possível executar o Garbage collector?
Sim, contudo, ao usar o método System.gh() sugere-se a JVM que o GC rode; essa
sugestão pode ser aceita ou não.
O que é condição de corrida?
É quando threads acessam uma variável compartilhada ao mesmo tempo podendo
sobrescrever a da outra.
O que é sessão/região crítica?
É uma área de código de um algoritmo que acessa um recurso compartilhado que não pode
ser acessado concorrentemente por mais de uma linha de execução. Ocorre quando um
sistema composto por N processos compartilham um dado recurso e o estado de um
processo é desconhecido pelo outro.
Quais as duas formas de sincronização possíveis em JAVA?
Métodos sincronizados = usando a palavra synchronized. Métodos synchronized executam
em exclusão mútua sobre o mesmo objeto compartilhado. Ex:
public synchronized void incrementar() {
c++;
}
Blocos sincronizados = usando synchronized(param-). Pode sincronizar mais de um objeto
no momento da sincronização.
O que são monitores?
São objetos que garantem a exclusão mútua na execução dos procedimentos associados a
eles. Apenas um procedimento associado ao monitor pode ser executado.
Quais métodos são usados para gerar eventos de espera e notificação para parar e
esperar?
Wait() e notify(). Ex:
public synchronized void armazenar(int dado) {
while(pronto) {
try {
wait();
} catch (Exception e) {}
this.Dado = dado;
pronto = true;
notify();
}
O que permite o modificador volatile?
Permite que uma variável pode ser acessada/modificada por mais de uma thread. Garante
que escrita e leitura são realizados diretamente na memória principal.
Por quem java, nas multithreads, pode ocorrer deadlocks?
Pois a palavra-chave synchronized causa o bloqueio da thread em execução, enquanto
aguarda o bloqueio associado ao objeto especificado.
O que é deadlock?
Situação em que duas ou mais threads são bloqueadas esperando uma a outra.
Para que serve Lock?
Pode ser usada no lugar de blocos sincronizados, oferece maior flexibilidade. Ex:
public class Example {
private Lock aLock = new ReentrantLock();
public int get(int who) {
aLock.lock();
try{
//Acessar recursos compartilhados...
} finally {
aLock.unlock();
}
}
OBS: É importante garantir que o lock seja liberado utilizando try/finally, já que ele não é
liberado automaticamente.
O que fazer para sinalizar um lock explícito?
Cria-se uma variável condicional que implementa a interface Condition. A condição provê
await() para esperar até que a condição seja verdadeira, e signal()/signalAll() para avisar as
threads que a condição ocorreu. Ex:
private Lock aLock = new ReentrantLock();
private Condition variavelCondicional = aLock.newCondition();
public int get(int who) {
aLock.lock();
try {
// ,....,
variavelCondicional.signalAll();
}
finally {
aLock.unlock();
}
O que são guarded blocks?
É um mecanismo que faz com que um bloco seja executado apenas após uma condição ser
verdadeira.
Explique notify() e notifyAll():
1 - notifica uma thread que esteja esperando em um lock. Não é possível especificar a
thread a ser acordada.
2 - notifica todas as threads que estejam esperando em um lock.
Quando devemos utilizar notify()?
Para acordar um nova thread. Útil para grande número de threads que todas estão fazendo
tarefas similares. Para evitar starvation.
O que são objetos imutáveis?
São úteis em aplicações concorrentes, pois são consistentes, uma vez que não fornecem o
método set, seus atributos são final e private e não permitem subclasses sobrescrever
métodos, utilizam final na classe, construtor privado e criam instâncias em fábricas de
métodos.
O que são sockets?
São uma abstração para endereços de comunicação através dos quais processos se
comunicam.
Por que sockets são necessários?
Cada endereço de comunicação tem um identificador único composto de endereço de
máquina e o identificador local da porta usada pelo processo. Para que dois computadores
possam manter comunicação, cada um precisa de um socket. O emprego de sockets está
geralmente relacionado ao paradigma cliente/servidor.
Quando um socket é criado?
No momento do binding, quando o processo se associa a um par endereço e porta.
Quais os tipos de sockets na internet?
- Comunicação ponto a ponto:
- Orientado a conexão (TCP)
- Sem conexão (UDP)
- Comunicação multiponto:
- UDP sobre multicast IP.
Quais as diferenças entre sockets TCP e UDP?
- TCP: A conexão deve ser estabelecida antes da transmissão de dados, connect e accept.
A conexão deve ser encerrada após a transmissão dos dados. É confiável e respeita a
ordem FIFO. Mais lento que UDP.
- UDP: O endereço do destino é especificado em cada datagrama. Não garante
confiabilidade e nem ordenação e tem menos overhead na comunicação. Oi
Quais as principais classes para utilizar sockets em java? E em qual pacote ficam?
TCP: Socket e ServerSocket.
UDP: DatagramPacket e DatagramSocket.
Multicast: DatagramPackete MulticastSocket.
Fica no pacote java.net;
Quais as diferenças dos sockets TCP?
Cliente e servidores são diferentes, pois servidor usa a classe ServerSocket para escutar
uma porta de rede da máquina a espera de requisições de conexão e cliente usa a classe
Socket para requisitar conexão a um servidor e transmitir dados.
- ServerSocket sSocket= new ServerSocket (porta, backlog);
Porta: número da porta que o socket deve esperar requisições.
Backlog: tamanho máximo da fila de pedidos de conexão que o sistema pode manter
para esse socket. Permite que requisições sejam enfileiradas esperando enquanto o
servidor está ocupado executando outras tarefas.
- Socket socket = new Socket(host, porta);
Host: endereço ou nome do servidor.
Porta: número da porta que o socket deve esperar respostas.
Oi
Quais passos são requeridos após a criação de sockets servidores?
Bind: esta operação associa o socket a um endereço local (IP local e porta).
Listen: esta operação permite que o socket receba requisições de conexão.
Essas operações são executadas automaticamente no construtor do socket servidor. Após
essas operações o servidor espera um pedido de conexão.
Socket socket = sSocket.accept();
Esse método fica bloqueado até que um cliente requeira uma requisição para esse socket.
Como o servidor pode interagir com o cliente?
Através da leitura e escrita de dados no socket.
Leitura:
InputStream in = socket.getInputStream();
Escrita
OutputStream out = socket.getOutputStream();
PS: o socket através do qual o servidor conversa com o cliente é o retornado pelo método
accept.
PS: o cliente pode interagir da mesma forma.
Cite algumas vantagens e desvantagens sobre os sockets TCP:
Vantagens:
- Compartilhamento de recursos;
- Aumento da velocidade de computação;
- Confiabilidade;
- Comunicação.
Desvantagens:
- Ambiente que não usa thread;
- Fila destino cheia;
- Dois processos devem concordar quanto aos dados transmitidos;
- São muito simples, por isso podemos apenas enviar e receber dados.
O que é RMI (Remote Method Invocation)?
Middleware que fornece serviços para criação de aplicações java distribuídas. Disponibiliza
o serviço de nomes. Sua principal função é permitir que métodos de objetos remotos sejam
chamados de forma tão transparente como se os objetos estivessem localmente (conforme
for possível). As chamadas de RMI são todas síncronas. RMI usa sockets java por baixo
dos panos. RMI utiliza TCP, já que os sockets também o usam.
O que é STUB?
É o proxy de referência remota para chamar os métodos que um cliente RMI usará. Não é
codificado pelo programador.
Quais as capacidades do serviço de nomes do RMI?
São sistemas capazes de localizar um componente associado pelo nome desse
componente. Ex: DNS.
Como é o passo-a-passo para usar RMI?
- Definindo a Remote Interface;
Remote não possui métodos.
Podem lançar exceções específicas. Ex: RemoteException
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Count extends Remote {
void set(int val) throws RemoteException;
void reset() throws RemoteException;
int get() throws RemoteException;
int increment() throws RemoteException;
}
- Codificando a Remote Class;
A classe de referência remota deverá implementar a Interface Remota e deve
extender UnicastRemoteObject:
java.rmi.server.UnicastRemoteObject
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class CountImpl extends UnicastRemoteObject implements Count {
private int sum;
public CountImpl() throws RemoteException {
super();
}
@Override public void set(int val) throws RemoteException { sum = val; }
@Override public void reset() throws RemoteException { sum = 0; }
@Override public int get() throws RemoteException { return sum; }
@Override public int increment() throws RemoteException { return sum++; }
}
- Gerando o Stub;
É o STUB que receberá as chamadas de método do cliente, enviando elas
para o objeto remoto, via rede, usando java sockets. Entre outras coisas, o
Stub é responsável por serializar os parâmetros, enviá-los via rede, receber o
bytes com valores de retorno ou exceções lançadas e reestruturar tudo em
objetos java, devolvendo para o cliente o resultado.
- Criando o Remote Server;
Remote Server é a classe que irá instanciar e publicar o Remote Object,
usando o RMIRegistry. A interface java.rmi.registry.Registry representa um
objeto que possui métodos para armazenar e encontrar referências remotas
ligadas a nomes
- Codificando o Cliente;
import java.rmi.Naming;
public class CountClient {
public static void main(String args[]) { try {
// Localiza o serviço pelo nome através do rmiregistry
Count myCount = (Count)Naming.lookup("rmi://192.168.0.9:1099/Count001");
// Realiza operações com objeto remoto
myCount.reset();
// Entrada de dados
myCount.set(6);
// Incrementar
myCount.increment();
// Exibir o valor incrementado
System.out.println(myCount.get());
} catch (Exception e) {
e.printStackTrace();
}
System.exit(0);
}
}
- Executando todos os programas.
Comparação Socket x RMI
O que é serialização?
Resume-se em salvar, gravar, capturar o estado de um objeto. Serialização é o processo de
converter um objeto em uma sequência linear de bytes que podem ser armazenados ou
transferidos. Desserialização é o processo de conversão de uma sequência previamente
serializada de bytes em um objeto;
Quais os possíveis problemas da serialização? Qual a solução?
Um objeto pode possui referências a outros e é necessário relativiza-los quando for
serializar. É necessário recuperar as referências corretamente ao restaurar o objeto. A
solução é a classe Serializable que converte para bytes e vice-versa, faz e desfaz
relativização das referências, etc.
O que são webservices?
São componentes que permitem as aplicações enviar e receber dados XML para que esses
dados possam ser aplicados em cada sistema. Nao estao vinculados a uma plataforma.
Usam o protocolo SOAP (Simple Object Access Protocol) para troca de mensagens, HTTP
para transporte e XML para codificação de dados, e usa mensagens no formato XML nao
definido como um modelo de troca para mensagens. Fornecem a infraestrutura para criacao
de aplicações web ou não distribuídas.
O que é SOA?
Service Oriented Architecture e uma arquitetura que representa funcionalidades do software
como serviços. E neutro a tecnologia, fracamente acoplado, localização transparente.
Como funciona a comunicação entre aplicações que usam webservices?
Usam 4 camadas que empacotam a requisição e a resposta entre o servidor e o cliente,
sendo elas:
- XML = estabelece objetos, métodos, parâmetros, dados e tipos de dados;
- SOAP = protocolo que permite a comunicação entre os ambientes;
- WSDL = descreve o serviço (XML);
- UDDI = representa service broker. Contém as descrições do WS.
Quais os passos que resumem a geração de um Webservice?
Publicação, localização e consumação.
Como e a arquitetura de webservices?
- Service Provider = As
mensagens com o Service
Requester ocorrem com o uso de
SOAP, um XML que contém dados
sobre a requisição e os resultados
encontrados.
- Service Requester =
Consome o serviço e efetua a
troca de mensagens com o Service
Provider com o uso do SOAP.
- Service Broker = Publica e
divulga o serviço. O provider
disponibiliza as informações de se
web service ao service broker, o
qual registra esse serviço em um
diretório (UDDI) público e gerencia-o.
Por que utilizar web services?
Facilidade de uso, neutralidade em relação ao SO e linguagem, fácil integração, fácil
suporte, integração.
Qual diferença entre XML e HTML?
XML foi projetado para marcar documento de estrutura arbitraria em oposição ao HTML que
foi projetado para marcar documentos com estruturas fixas.
Como funciona o SOAP (simple object acess protocol)?
Opera sobre protocolos da camada de aplicação, mas geralmente é tratado como um
protocolo de transporte. Geralmente adota-se SOAP sobre o protocolo HTTP. Permite troca
de mensagens uni e bi direcional.
Consiste em:
- Envelope: raiz do documento XML que representa a mensagemSOAP.
- Cabeçalho (opcional): oferece mecanismos para estender a mensagem, informações
de roteamento, segurança, coordenação.
- Corpo: Documento.
- Fault: opcional.

Outros materiais