Escolar Documentos
Profissional Documentos
Cultura Documentos
DE APLICAES
DISTRIBUDAS
2015.2
PROF ANDERSON
APRESENTAO
Currculo Lattes: http://lattes.cnpq.br/1640275970796898
Email: asantos@unicarioca.edu.br
Prova
Questes Objetivas
Questes Discursivas
Quantidade
Valor
Quantidade
Valor
AV1
AV2
0,5
1,5
2a Chamada
da AV1
2a Chamada
da AV2
0,5
1,5
AVF
DATAS IMPORTANTES
23 SET: AV1
Matria: Unidades 1, 2 e 3.
11 NOV: AV2
Matria: Unidades 1, 2, 3 e 4.
25 NOV: Segunda Chamada
Matria: Unidades 1, 2, 3 e 4.
02 DEZ: AVF
Matria: Unidades 1, 2, 3 e 4.
CONTEDO PROGRAMTICO
UNIDADE 1 - INTRODUO
UNIDADE 2 - FUNDAMENTOS
UNIDADE 3 - SOCKET, RPC E RMI
UNIDADE 4 - WEB SERVICES
BIBLIOGRAFIA
ATIVIDADE SUPERVISIONADA
ENUNCIADO:
Implementar um programa em Java que permita a troca de arquivos entre dois
computadores.
Requisitos:
- Dois usurios: remetente e destinatrio;
- O remetente poder escolher o arquivo;
- Poder ser qualquer tipo de arquivo;
- O destinatrio poder se recusar a receber o arquivo;
- O remetente ser avisado:
- se o destinatrio no quiser receber o arquivo;
- se o destinatrio recebeu o arquivo;
- O arquivo a ser enviado dever estar criptografado com um algoritmo de
criptografia simtrica.
Prazo: 11 NOV
Grupo: 05 alunos
INTRODUO
I
-Histrico
-Conceitos Bsicos
-Ambiente de Programao
INTRODUO
Histrico
-ARPAnet - Creeper & Reaper-ran, dcada de 70
-Aproveitamento
de recursos ociosos:
-Processamento
-Armazenamento
Robert Thomas
Morris
"Im creeper..
catch me if you
can"
INTRODUO
Histrico
- Evoluo
dos processadores
- Lei de Moore: a cada 18 meses a quantidade de transistores iria dobrar
INTRODUO
Histrico
INTRODUO
Conceitos Bsicos
INTRODUO
Conceitos Bsicos
Cluster
Compreende dois ou mais computadores
ou sistemas (denominados ns) na qual
trabalham em conjunto para executar
aplicaes ou realizar outras tarefas, de tal
forma para que os usurios que os utilizam
tenham a impresso que somente um
nico sistema responde para eles.
INTRODUO
Conceitos Bsicos
Tipos de Cluster
Alta
Disponibilidade:
disponibilidade de servios e
recursos de forma ininterruptas
atravs do uso da redundncia
implcitas ao sistema;
- Balanceamento de carga:
distribui as requisies de
recursos entre as mquinas que
compem o cluster.
INTRODUO
Conceitos Bsicos
Algoritmos de Balanceamento
de Carga
- Least Connections: redireciona as
requisies para o servidor baseado no
menor nmero de requisies/conexes.
- Round Robin: sempre direcionar as
requisies para o prximo servidor
disponvel de uma forma circula
- Weighted Fair: dirige os pedidos para
os servidores baseados na carga de
requisies de cada um e na
capacidade de resposta dos mesmos
INTRODUO
Conceitos Bsicos
Beowulf Cluster
O cluster Beowulf foi idealizado pelos
seus desenvolvedores com o objetivo
de suprir a crescente e elevada
capacidade de processamento em
diversas reas cientificas com o
objetivo de construrem sistemas
computacionais
poderosos
e
economicamente viveis.
INTRODUO
Conceitos Bsicos
Grade Computacional
um ambiente computacional
distribudo paralelo que tem como
objetivo
alcanar
a
interoperabilidade
entre
as
organizaes virtuais, atravs da
habilidade de cooperao, de
compartilhamento e agregao de
recursos
computacionais
geograficamente distribudos de
forma a disponibiliz-los
como
recursos e servios.
INTRODUO
Conceitos Bsicos
Camada de aplicaes
Portais de acesso e programas que exploram
a potencialidade das grids
Middleware
Servios bsicos como gesto de recursos distribuidos
Elementos bsicos
Recursos computacionais como servidores, desktops e
seus sistemas operacionais
INTRODUO
Conceitos Bsicos
Cluster
Grid
Alm disso
servios
prioridade
para
prestao
de
INTRODUO
AMBIENTE DE DESENVOLVIMENTO
INTRODUO
AMBIENTE DE DESENVOLVIMENTO
Netbeans
Passo 1: Criar um projeto;
INTRODUO
AMBIENTE DE DESENVOLVIMENTO
Netbeans
Passo 1: Criar um projeto;
Passo 2: Selecionar a categoria e o
projeto;
INTRODUO
AMBIENTE DE DESENVOLVIMENTO
Netbeans
Passo 1: Criar um projeto;
Passo 2: Selecionar a categoria e o
projeto;
Passo 3: Escolher o nome do projeto;
INTRODUO
AMBIENTE DE DESENVOLVIMENTO
Netbeans
Passo 1: Criar um projeto;
Passo 2: Selecionar a categoria e o
projeto;
Passo 3: Escolher o nome do projeto;
FUNDAMENTOS
-Transparncia
-Flexibilidade
-Confiabilidade
-Desempenho
-Escalabilidade
II
FUNDAMENTOS
TAXONOMIA DE FLYNN
FUNDAMENTOS
TAXONOMIA DE FLYNN
FUNDAMENTOS
TAXONOMIA DE FLYNN
FUNDAMENTOS
TAXONOMIA DE FLYNN
- Na
FUNDAMENTOS
TAXONOMIA DE FLYNN
- No
existem.
FUNDAMENTOS
TAXONOMIA DE FLYNN
FUNDAMENTOS
TRANSPARNCIA
FUNDAMENTOS
TRANSPARNCIA
Tipos de transparncias:
- Acesso: oculta a diferena na representao de dados e no modo de
acesso a um recurso;
- Localizao: oculta o lugar em que um recurso est localizado;
- Migrao: oculta que um recurso pode ser movido para outra localizao;
- Relocao: oculta que um recurso pode ser movido para outra localizao
enquanto em uso;
- Replicao: oculta que um recurso replicado;
- Concorrncia: oculta que um recurso possa estar compartilhado entre
diversos usurios; e
- Falha: oculta a falha na recuperao de um recurso.
FUNDAMENTOS
CONFIABILIDADE
FUNDAMENTOS
DESEMPENHO
Mtrica
fundamental:
quanto mais
rpido
speedup
um
executa em n computadores.
programa
FUNDAMENTOS
DESEMPENHO
FUNDAMENTOS
ESCALABILIDADE
Tipos de Escalabilidade:
- tamanho;
- geogrficos; e
- gerenciamento.
Problemas:
- servios centralizados. Ex. Um nico servidor para todos os usurios;
- dados centralizados. Ex: Uma nica lista telefnica online; e
- algoritmos centralizados: Ex: Fazer roteamento com informaes
incompletas.
Comunicao nos
Sistemas Distribudos
III
-Modelo Cliente Servidor
- Sockets
- BSD Unix;
- ponto de comunicao entre processos;
- transmitir mensagens atravs de sockets abertos por processos;
- um processo por porta;
Cliente
Servidor
-Protocolos:
- TCP: Confivel
- UDP: No confivel
8000
8000
Cliente
String
Servidor
8000
Cliente
Servidor
Cliente
Servidor
8000
Cliente
Servidor
Cliente
Servidor
8000
Cliente
Servidor
Cliente
Servidor
8000
Cliente
Servidor
Cliente
Servidor
8000
Cliente
Servidor
DataInputStream in = new
DataInputStream(s.getInputStream());
Cliente
Servidor
8000
Cliente
Servidor
out.writeUTF("Ol");
String data = in.readUTF();
System.out.println("Received: " + data);
Cliente
clientSocket = listenSocket.
accept();
DataInputStream in = new DataInputStream
(clientSocket.getInputStream());
DataOutputStream out = new DataOutputStream
(clientSocket.getOutputStream());
String data = in.readUTF();
System.out.println(data);
out.writeUTF("Servidor responde " + data);
Servidor
String
8000
Cliente
Servidor
out.writeUTF("Ol");
String data = in.readUTF();
System.out.println("Received: " + data);
Cliente
clientSocket = listenSocket.accept();
DataInputStream in = new
DataInputStream(clientSocket.
getInputStream());
DataOutputStream out = new DataOutputStream
(clientSocket.getOutputStream());
String data = in.readUTF();
System.out.println(data);
out.writeUTF("Servidor responde " + data);
Servidor
8000
Cliente
Servidor
String
int serverPort = 8000;
out.writeUTF("Ol");
clientSocket = listenSocket.accept();
DataInputStream in = new DataInputStream
(clientSocket.getInputStream());
out.writeUTF("Servidor
responde " + data);
Cliente
Servidor
8000
Cliente
Servidor
8000
Cliente
Servidor
8000
Cliente
Servidor
8000
Cliente
Servidor
Cliente
8000
Cliente
Servidor
Cliente
8000
Cliente
Servidor
Cliente
8000
Cliente
Servidor
Cliente
UDP
- Orientado a datagrama
- No orientado a conexo
- No tem controle de fluxo, erros e sequenciamento.
- No confivel
UDP
Cliente
Cliente
Servidor
Servidor
Cliente
Cliente
Servidor
Servidor
Cliente
Cliente
Servidor
Servidor
Cliente
Cliente
Servidor
Servidor
Cliente
Cliente
Servidor
7000
Servidor
Cliente
Cliente
Servidor
7000
Servidor
Cliente
Cliente
Servidor
7000
Servidor
Cliente
Cliente
Servidor
7000
Servidor
Cliente
Cliente
Servidor
7000
Servidor
Cliente
Cliente
Servidor
7000
Servidor
Cliente
Cliente
Servidor
7000
Servidor
Cliente
Cliente
Servidor
7000
Servidor
Definio
Permite que um programa procedural chame uma funo que reside em outro
computador to convenientemente como se esta funo fosse parte do mesmo
programa que executa, no mesmo computador.
Definio
RPC foi desenvolvida para permitir aos programadores se concentrar nas
tarefas exigidas de um programa chamando funes e, tornando
transparente ao programador o mecanismo que permite que as partes do
aplicativo se comuniquem atravs de uma rede.
Stubs:
RPC-sun e rpcgen
RPC-sun : criado orginalmente para mquinas sun. Hoje disponvel em
vrios sistemas.
Constitui-se de:
Uma linguagem de definio de interfaces (RPCL).
Aplicativo rpcgen, que cria os stub de comunicao
Biblioteca RPC
Protocolo de comunicao para as aplicaes.
Exemplo.
Passo 1) Definir o protocolo. (rpcgen) - hello.x
$ rpcgen hello.x
program HELLOPROG {
version HELLOVERS {
string HELLOWORLD() = 1;
} = 1;
} = 0x20000044;
/*
/*
/*
/*
/*
RPC
Unidade 3
Exemplo.
Passo 3) Desenvolvimento do programa cliente e servidor. Devem fazer
chamadas ao header (hello.h);
Passo 4) Compilar todo mundo.
a) gcc -c hellocliente.c,
b) Makefile
generate_stubs:
rpcgen hello.x
$(CC) -c hello_clnt.c
$(CC) -c hello_svc.c
clean:
$(RM)
$(RM)
$(RM)
$(RM)
$(RM)
$(RM)
hello_clnt.*
hello_svc.*
hello.h
client
server
-fr *~
RPC
Unidade 3
#include
#include
#include
#include
<stdio.h>
<string.h>
<rpc/rpc.h>
"hello.h"
RPC
#include <stdio.h>
#include <rpc/rpc.h>
#include "hello.h"
Java RMI
Java RMI permite que objetos Java executando no mesmo computador
ou em computadores separados se comuniquem entre si via chamadas
de mtodos remotos. Essas chamadas so muito semelhantes quelas
que operam em objetos no mesmo programa.
Java RMI uma implementao da RPC em Java para comunicao
distribuda de um objeto Java com outro. Um vez que um mtodo (ou
servio) de um objeto Java registrado como sendo remotamente
acessvel, um cliente pode pesquisar (lookup) esse servio e receber uma
referncia que permita ao cliente utilizar esse servio (isto , chamar o
mtodo).
Introduo
SOAP
SOAP um protocolo baseado em XML para troca de informaes em um
ambiente distribudo.
Os Web services so componentes que permitem s aplicaes enviar e receber
dados em formato XML Cada aplicao pode ter a sua prpria "linguagem",
que traduzida para uma linguagem universal, o formato XML.
JAVA RMI
Unidade 3
JAVA RMI
Unidade 3
COMPOSIO:
- servidor: cria objetos remotos e cria referncias para tornar estes objetos
acessveis;
- cliente: pega as referncias a objetos remotos no servidor e invoca os
mtodos desses objetos.
JAVA RMI
Unidade 3
Cliente
Servio de
Diretrio
(RMI Registry)
3
Servidor
JAVA RMI
Unidade 3
Cliente
Servio de
Diretrio
(RMI Registry)
3
Servidor
(fibonacci)
JAVA RMI
Unidade 3
Interface do servio:
JAVA RMI
Unidade 3
Interface do servio:
JAVA RMI
Unidade 3
Interface do servio:
JAVA RMI
Unidade 3
Interface do servio:
JAVA RMI
Unidade 3
Cliente:
public class Cliente {
static Fibonacci objRemoto = null;
public static void main(String args[]) {
try {
objRemoto = (Fibonacci) Naming.lookup("//ServidorDiretrio/Fibonacci");
System.out.println("Cliente>> Informe o termo da srie: ");
int n = (new Scanner(System.in)).nextInt();
System.out.println("Fibonacci do termo de ordem " + n + " vale " + objRemoto.calculo(n));
} catch (Exception e) {
System.out.println("Exceo Cliente>> " + e.getMessage());
e.printStackTrace();
}
}
}
JAVA RMI
objetivos
JAVA RMI
objetivos
JAVA RMI
objetivos
Passo 3) Servidor
3.1) Classe
extends UnicastRemoteObject implements Fatorial
JAVA RMI
objetivos
Passo 3) Servidor
3.2) Clculo
public int calculo(int n) {
if(n == 0 || n == 1) return 1;
if(n<0) return 0;
return n*calculo(n-1);
}
JAVA RMI
objetivos
Passo 3) Servidor
3.3) Main
public static void main(String[] args) throws MalformedURLException,
RemoteException {
RMIFatorialServidor servidor = new RMIFatorialServidor();
Naming.rebind("Fatorial", servidor);
System.out.println("Servidor registrado!");
}
JAVA RMI
objetivos
Passo 4) Cliente
3.3) Main
public static void main(String[] args) throws NotBoundException,
MalformedURLException, RemoteException {
fatorial = (Fatorial) Naming.lookup("//127.0.0.1/Fatorial");
System.out.println("n:");
int n = (new Scanner(System.in)).nextInt();
System.out.println(fatorial.calculo(n));
}
JAVA RMI
objetivos
Passo 5) Construo
JAVA RMI
objetivos
Passo 6) rmiregistry
JAVA RMI
objetivos
COMPUTAO
DISTRIBUDA
IV
-Modelos de Computao
Distribuda;
-Web Services.
COMPUTAO DISTRIBUDA
objetivos
COMPUTAO DISTRIBUDA
objetivos
Web Service
- Um servio web uma soluo utilizada para a integrao de
sistemas onde softwares ou hardwares podem enviar ou receber
mensagens. Um servio web deve fornecer uma infraestrutura
para se ter uma forma mais rica e mais estruturada de
interoperabilidade entre clientes e servidores. A representao de
dados externa e o empacotamento das mensagens trocadas entre
clientes e servios web so feitos em XML (Extensible Markup
Language), o que resulta em um grupo de tipo de dados bem
vasto.
COMPUTAO DISTRIBUDA
objetivos
Arquitetura
So componentes da arquitetura de um servio web:
1. SOAP (Simple Object Access Protocol): um protocolo que
permite a troca de informaes em ambientes distribudos.
Contm as chamadas e retornos dos Web Services encapsuladas
em sua estrutura.
COMPUTAO DISTRIBUDA
objetivos
Arquitetura
So componentes da arquitetura de um servio web:
2. WSDL (Web Service Description Language): a linguagem de
descrio de Web Services, onde esto descritas as informaes
necessrias para invocao dos Web Services, como a
localizao, operaes disponveis e assinaturas de funes do
mesmo.
COMPUTAO DISTRIBUDA
objetivos
Arquitetura
So componentes da arquitetura de um servio web:
3. UDDI (Universal Description, Discovery and Integration): Uma
implementao de UDDI equivale a um Web Service Registry,
disponibilizando mecanismos para busca e publicao de Web
Services.
Ele
gerencia
informao
sobre
provedores,
implementaes e metadados de servios. Alm disso, contm
informaes sobre os servios e funcionalidades que os servios
web oferecem, permitindo uma associao desses servios com
suas informaes tcnicas.
COMPUTAO DISTRIBUDA
objetivos
COMPUTAO DISTRIBUDA
objetivos
COMPUTAO DISTRIBUDA
objetivos
COMPUTAO DISTRIBUDA
objetivos
COMPUTAO DISTRIBUDA
objetivos
COMPUTAO DISTRIBUDA
objetivos
COMPUTAO DISTRIBUDA
objetivos
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
WEB SERVICES
OBRIGADO
BOA-SORTE!