Universidade de São Paulo
Instituto de Ciências
Matemáticas e de
Computação
CAPES
Implementação de um
espaço de tuplas do tipo
JavaSpaces
Orlando de Andrade Figueiredo
Orientação:
Prof. Dr. Dilvan de Abreu Moreira
São Carlos, 6 de dezembro de 2002
Tópicos
• Objetivos
• JavaSpaces enquanto espaço de
tuplas
• JavaSpaces enquanto serviço
Jini
• JuspSpaces
• Resultados
• Conclusões
Aplicações Distribuídas
• Apoio para o desenvolvimento de
aplicações distribuídas
– Modelos de programação com alto nível
de abstração
– Ferramentas (Middleware)
Espaços de tuplas
• Função: coordenação,
sincronização e comunicação
entre processos espalhados
sobre sistemas distribuídos
Espaços de tuplas
• Vantagens:
– Simplicidade
• Poucos conceitos e operações
– Baixo acoplamento
– Persistência
Espaços de tuplas em
Java
• JavaSpaces
– Sun
– Serviço Jini
– Implementações:
•
•
•
•
Outrigger (Sun)
GigaSpaces
Autevo
RDBSpaces
• T Spaces
– IBM
• etc.
Problemas
• Implementações de JavaSpaces
requerem o setup completo de
Jini
• Licenças proprietárias
– JavaSpaces: SCSL
– IBM
– Outrigger requer tecnologia
proprietária para persistência
Objetivos
• Desenvolver uma nova
implementação de JavaSpaces
– Com o setup simplificado
• Jini
• RMI
– Construída com tecnologias abertas
• Persistência
– Protótipo distribuído segundo a GNU-GPL
Tópicos
• Objetivos
• JavaSpaces enquanto espaço de
tuplas
• JavaSpaces enquanto serviço
Jini
• JuspSpaces
• Resultados
• Conclusões
Tuplas
• Em JavaSpaces,
– Tuplas (entries) são objetos
– Campos são objetos
“Tarefa”
4572307
Espaço de tuplas
• Modelo de memória
• Operações
– Escrita
– Leitura
• Unidade básica é a tupla
“Tarefa”
97577
“Tarefa”
46783
“Resultado”
37
“Tarefa”
13332453
Operação de escrita
• Write(entry, ###, ###)
Operações de leitura
• Take(gabarito, ### , ###)
• Gabarito
– Tupla usada na operação de leitura
– Pode ter campos “coringas” (null)
• Regras para compatibilidade entre
gabarito e tupla
– Classe da tupla = classe do gabarito
– Campo “não coringa” do gabarito =
campo da tupla
– Campo “coringa” do gabarito = qualquer
valor na tupla
“Resultado”
null
“Tarefa”
97577
“Tarefa”
46783
“Resultado”
37
“Tarefa”
13332453
Operações de leitura
• Na operação take,
– A tupla é removida
– Se não houver tupla compatível, o
processo bloqueia
• Memória associativa
– Recuperação de informação com base
em conteúdo
– Vantagem: dispensa endereçamento
global, algo difícil em sistemas
distribuídos
Aplicação
• Programação paralela
• Modelo mestre-operários
• Mestre
– Despacha tarefas
– Recolhe resultados
• Operário
– Procura tarefas
– Espera, se não houver
– Encontrando, resolve e retorna o
resultado
Aplicação
• O mestre desconhece quem e
quantos são os operários
• Operários podem ser
adicionados ou removidos à
vontade
Tópicos
• Objetivos
• JavaSpaces enquanto espaço de
tuplas
• JavaSpaces enquanto serviço
Jini
• JuspSpaces
• Resultados
• Conclusões
Jini
• Na mídia: Sistemas distribuídos
“plug-and-play”
• Mais amplo: conjunto de
modelos e protocolos
Clientes e Serviços
• Jini é cliente-servidor
– A idéia de serviço é chave em Jini
• Jini é chamada remota a
procedimento
– Proxy representa o serviço junto ao
cliente
– Não faz menção ao protocolo que deve
ser usado entre proxy e serviço
– O proxy deve ser obtido por download,
sempre
Serviço de Lookup
• Forma padrão de se obter proxies
– Outros meios podem ser usados
• Para encontrar o serviço de lookup
– Protocolo de descoberta
– Na prática, um broadcasting
– Desvantagem: restringe o tipo de rede
• JuspSpace
– Dispensa o servidor de lookup
Leasing
• O cliente especifica por quanto
tempo quer o serviço
• O servidor retorna um objeto
Lease com o qual o cliente pode
consultar, renovar ou cancelar o
leasing
• Exemplo
– Write(entry, ###, 1000)
Transações
• Mecanismo de confiabilidade muito
adotado em sistemas distribuídos
• Protocolo de commit em duas fases
distribuído
• A presença de transações modifica a
semântica da operações
– Exemplo: A operação take pode retirar
• Tuplas escritas na mesma transação
• Tuplas escritas sem transação
• Tuplas não removidas por outras transações
Tópicos
• Objetivos
• JavaSpaces enquanto espaço de
tuplas
• JavaSpaces enquanto serviço Jini
• JuspSpaces
– Bancos de dados relacionais
– Hashing
– Sockets
• Resultados
• Conclusões
Bancos de dados
relacionais
• Persistência de informações
– Tuplas
– Transações
• Recuperação de informação
• Controle de concorrência
Mapeamento EntriesTabelas
• Aspectos relevantes
– Hierarquia
– Metadados
• Leasing
• Transação
– Gabaritos
id
time
id type
lease
wtxn
ttxn
time expiration txn
ongofield
number
rid
ongodata
obj1
rtxn
ob
Hashing dos campos
• Calcular uma chave para cada
campo da tupla no cliente
• Usar essa chave no protocolo de
comunicação
• Algoritmo
– Serialização
– MD5
Comunicação clienteservidor
• A imensa maioria dos serviços Jini
usa o RMI para implementar o
modelo de proxies
• JuspSpaces usa sockets
• Arquitetura
– Proxy
• Possui endereço do serviço (máquina e porta)
– Handler
• Thread que atende às requisições no servidor
Tópicos
• Objetivos
• JavaSpaces enquanto espaço de
tuplas
• JavaSpaces enquanto serviço
Jini
• JuspSpaces
• Resultados
• Conclusões
Teste de Desempenho
• Repetir n vezes o procedimento
– Escrever uma entry simples (Write)
– Ler a entry (read)
– Remover a entry (take)
Número de operações JuspSpaces Persitent Outrigger Transient Outrigger
50
35
15
7
200
142
29
28
Aplicação
• XML Server
– Usa JavaSpaces como mecanismo
de persistência
– Originalmente baseado no
Outrigger
– Não utiliza transações
– A migração foi fácil
Tópicos
• Objetivos
• JavaSpaces enquanto espaço de
tuplas
• JavaSpaces enquanto serviço
Jini
• JuspSpaces
• Resultados
• Conclusões
Contribuições
• Primeira implementação JavaSpaces
que dispensa o servidor de Lookup
• Estudo de caso para a
implementação de JavaSpaces sobre
bases de dados relacionais
• Protótipo sob a licença GNU-GPL
Trabalhos futuros
• Implementação do protocolo de
acesso ao proxy
• Revisão formal do controle de
concorrência
• Emprego de JuspSpaces em
outras aplicações
Universidade de São Paulo
Instituto de Ciências
Matemáticas e de
Computação
CAPES
Download

Proxy - Universidade de São Paulo